2016-07-22 51 views

回答

0

对于此查询:

SELECT id 
FROM table 
WHERE col1 LIKE 'Someting%' 
ORDER BY col2 
LIMIT 10; 

有两种选择进行优化。对于WHERE子句,您可以使用table(col1)上的索引 - 虽然增加col2id涵盖了查询中的所有列,并且有所改进。

这是可行的,因为在LIKE字符串的开头没有通配符。如果您正在寻找单词,那么您可能需要考虑全文索引。

第二种选择是更神秘,但如果很多很多行的where条款匹配它可能会有所帮助:

select id 
from (select id 
     from table 
     order by col2 
    ) t 
where col1 like 'Something%' 
limit 10; 

随着上table(col2, id, col1)的索引。我不是100%肯定这会起作用,但是我们的想法是鼓励引擎对索引进行全面扫描,在每个条目上测试where条款。

-1

Put INDEX on col1

索引用于快速查找具有特定列值的行。

语法添加INDEX

ALTER TABLE `table` ADD INDEX `col1` (`col1`); 
相关问题