数据规模越大,有无索引的差别就越大。实际上,小型个人专业专用应用程序,完全不用索引也能达到理想的速度。数据有1000条左右时,利用树搜索的额外开销反而更大,正常地从头开始查找更快一些。但是,数据变大后,就会出现没有索引根本无法访问的状况。所以说索引真的非常重要。而且,mysql内部有某种程度的优化,会根据记录数来判断用索引快还是不用索引快。
不过mysql也有不足,mysql的适用性有点不好。即使针对带有索引的列进行查询,有些sql语句也不会使用索引。
-
基本上,使用索引的有:
where,order by,group by 条件中指定的列。
例如select * from entry where url = “http://...”这个查询在where语句中指定了url列,那么如果url列上有索引,就会使用。
-
何时索引有效
->明确地添加的索引
->主键、UNIQUE约束
在mysql中,除了用alter table命令等明确地添加的索引之外,带有主键和UNIQUE约束的列上有索引。用show index命令可以确认索引的内容。
-
mysql索引的陷阱
->想同时使用多个列上的索引,就必须使用复合索引
在这儿就出现问题了,mysql每次查询只能使用一个索引。如果想同时使用两个索引就必须设置(url,timestamp)这个符合索引。