优化mysql-在这种情况下索引会改善吗?

时间:2018-11-23 23:44:14

标签: mysql optimization indexing

列alo是tinytext(平均长度:两个字符)

我最常查询的是

select * from table where .... order by alo=''

在alo上建立索引会更快吗?

alo的确切内容并不重要-排序仅基于alo是否为空的问题。

为什么(不能)提高速度?

1 个答案:

答案 0 :(得分:0)

我认为我们只是在谈论

select * from table where .... order by alo=''

情况1:无索引。整个表格将始终被扫描。

情况2:WHERE中的某些内容可以使用索引。那么该索引可能会有所帮助。

情况3:alo中未提及WHERE。索引alo将无济于事。当索引列隐藏在函数中时,MySQL无法使用索引。在此查询中,alo=''实际上是一个函数调用。

ORDER BY alo 可以使用INDEX(alo)并且它会有类似的结果。好吧,实际上alo=''会在非空格之后对空格进行排序。因此,您可能需要ORDER BY alo DESC才能获得空白。此外,NULL值可能还会增加其他皱纹。

与此同时,还有另一种优化...不要使用TINYTEXT;相反,请使用VARCHAR(..)和适当的最大值(原因与复杂查询中的临时表有关,对您的查询可能无关紧要。)而且,您无法为任何类型的TEXT列编制索引。