mysql设置了索引之后,他在什么时候生效


设置了索引字段后。
他到底什么情况下生效。。或者说起作用
怎么没感觉呢

数据库 php mysql 数据库设计

IdKenji 10 years, 2 months ago

在你alter/add index之后生效,如果表大,会执行很长时间,并且会索住表,insert delete update将无法执行

adkeidk answered 10 years, 2 months ago

简单的说:查询的时候生效。

索引(indexes)就好像书籍的目录/或者字典里的字母表和偏旁部首表(这也是 index 的本意),它在你需要从书或字典里查找内容的时候发挥作用。

比如说你有一本关于 数据库 的书(相当于表),你想要查询其中关于 索引 的章节(查询条件),你就可以在目录里(相当于索引)找到 索引 标题,然后看到对应的页数为 235 (记录行数),这样你很快就找到它了。

如果你没有索引,那就只能一页一页的翻直到找到 索引 这一章为止,这就叫做 全表扫描 ——当然是不好的。

但是索引也不是只要有了就一定好的。还是上面的例子,假设这一次你要找的是 数据库 (想想看,一本关于数据库的书,里面会有多少内容是包含 数据库 三个字的),那么索引几乎帮不上你什么忙(结果太多了),这和你做一次全表扫描没啥差别。

再比方说你这本书一共就10页,那么索引也没啥用处(索引本身还得占个一两页)。

索引本身得有意义,标记重要的,极少重复的信息。对于一本书来说,你把每一个字都做索引就是毫无意义的事情。

综上所述你大概就知道在什么条件下你才可以直观的感受到索引带来的变化了吧?

傲娇啊混蛋 answered 10 years, 2 months ago

Your Answer