mysql 联合索引

来源:互联网 发布:互联网十云计算概念股 编辑:程序博客网 时间:2024/06/05 07:42
<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE才会使用索引


若某字段已建立索引,求该字段的min()或max()时,MySQL会使用索引


不要以为WHERE中的字段顺序无所谓,可以随便放在哪,应该尽可能地第一次就过滤掉大部分无用的数据,只返回最小范围的数据。


在创建多列索引时,要根据业务需求,where子句中使用最频繁的一列放在最左边。


使用短索引可以提高查询速度而且可以节省磁盘空间和I/O操作。
如果有一个CHAR(255)的列,如果在前10个或20个字符内,多数值是惟一的,那么就不要对整个列进行索引。


在mysql中执行查询时,只能使用一个索引,mysql会选择一个最严格(获得结果集记录数最少)的索引
尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。
mysql where z和order by x,y  可以建立联合索引 z+x+y来处理,但必须保证x,y两个排序字段,同为倒序或正序。


不要在列上进行运算
select * from users where YEAR(adddate)<2007; 


将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成


select * from users where adddate<‘2007-01-01’;  


不使用NOT IN和<>操作




存储索引方式:
B-树  查找范围
hash索引  查找一条记录


create index orderid_productid on orders(product_id, order_id);

原创粉丝点击