时间:2019-09-16 14:49:06 作者:无名 浏览量:43
五、选择索引列
在功能优化过程中,选择在哪些列上创立索引是最重要的步骤之一。可以考虑运用索引的主要有两种类型的列:在WHERE子句中出现的列,在join子句中出现的列。请看下面这个查询:
SELECT age ## 不运用索引FROM people WHERE firstname='Mike' ## 考虑运用索引AND lastname='Sullivan' ## 考虑运用索引
这个查询与前面的查询略有不同,但仍属于简略查询。因为age是在SELECT部分被引证,MySQL不会用它来约束列选择操作。因而,对于这个查询来说,创立age列的索引没有什么必要。下面是一个更杂乱的比方:
SELECT people.age,##不运用索引town.name ##不运用索引FROM people LEFT JOIN town ONpeople.townid=town.townid ##考虑运用索引WHERE firstname='Mike' ##考虑运用索引AND lastname='Sullivan' ##考虑运用索引
与前面的比方相同,因为firstname和lastname出现在WHERE子句中,因而 这两个列仍旧有创立索引的必要。除此之外,因为town表的townid列出现在join子句中,因而咱们需求考虑创立该列的索引。那么,咱们是否可以简 单地以为应该索引WHERE子句和join子句中出现的每一个列呢?差不多如此,但并不彻底。咱们还有必要考虑到对列进行比较的操作符类型。MySQL只要 对以下操作符才运用索引:<,<=,=,>,>=,BETWEEN,IN,以及某些时分的LIKE。可以在LIKE操作中运用索 引的景象是指另一个操作数不是以通配符(%或许_)开头的景象。例如,“SELECT peopleid FROM people WHERE firstname LIKE 'Mich%';”这个查询将运用索引,但“SELECT peopleid FROM people WHERE firstname LIKE '%ike';”这个查询不会运用索引。