SQL 索引

此文不会列出加索引的优缺点! 只会教新手怎么建立索引与看加了索引的好处

alter table deer_message_notice add index(user_id); 建立索引 deer_message_notice 这个是表名, 括号里面的是你需要加上索引的字段

explain select * from deer_message_notice where user_id = 783; explain 这个就是用来查询这个SQL运行情况

explain 不懂得这么看,可以去百度搜索资料!

联合索引的原则,最左原则,有时候,明明加了索引,但是一看执行计划,却没有用上索引,因为组合索引,它有一个最左原则,下面,贴上对最左原则的解释:
索引的最左前缀原理:

通常我们在建立联合索引的时候,也就是对多个字段建立索引,相信建立过索引的同学们会发现,无论是oralce还是mysql都会让我们选择

索引的顺序,比如我们想在a,b,c三个字段上建立一个联合索引,我们可以选择自己想要的优先级,a、b、c,或者是b、a、c 或者是c、a、b

等顺序。为什么数据库会让我们选择字段的顺序呢?不都是三个字段的联合索引么?这里就引出了数据库索引的最左前缀原理。

比如:索引user:(a,b,c)有三个字段,我们在使用sql语句来查询的时候,会发现很多情况下不按照我们想象的来走索引。

select * from deer_user where c = ‘1’ 这个sql语句是不会走user索引的

select * from deer_user where b =‘1’ and c =‘2’ 这个语句也不会走user索引。

什么语句会走index1索引呢?
答案是:
select * from deer_user where a = ‘1’
select * from deer_user where a = ‘1’ and b = ‘2’
总结:
1、需要加索引的字段,要在where条件中

2、数据量少的字段不需要加索引;因为建索引有一定开销,如果数据量小则没必要建索引(速度反而慢)

3、如果where条件中是OR关系,加索引不起作用

4、联合索引比对每个列分别建索引更有优势,因为索引建立得越多就越占磁盘空间,在更新数据的时候速度会更慢。另外建立多列索引

时,顺序也是需要注意的,应该将严格的索引放在前面,这样筛选的力度会更大,效率更高。

5.连接查询 用到索引 就要优先查询出加了 索引的字段,然后用这些字段去匹配条件 ,速度会快很多。

发布了70 篇原创文章 · 获赞 16 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章