日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

mysql 索引查询_mysql索引的建立和查询语句优化

發布時間:2023/12/18 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 索引查询_mysql索引的建立和查询语句优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先表內容展示:

# 300W條的模擬數據

# 并且沒有建立任何索引

不建立索引的查詢時間:

以id查詢的(4秒多):

以email查詢的(4秒多):

建立主鍵索引后:

alter table s1 modify id int primary key auto_increment;

建立后再查詢:

# 以id查不到1秒,所以索引要建立正確且查詢條件得適合

建立email字段的普通索引:

create index email_index on s1(email);

建立后查詢:

# 瞬間快了非常多

mysql的索引介紹:

建立索引為了提高查找的效率,建立正確索引,以及sql查詢語句正確,則可以提高用戶體驗。

mysql的索引:

primary key? # 唯一 + 非空 + 聚集索引

unique key?? # 唯一 + 索引,輔助索引

index key??? # 普通索引,能夠加速查詢,輔助索引

foreign key? # 本身沒有索引的,但是它關聯的外表中的字段是unique索引

注:

(1) 主鍵作為條件的查詢如果能夠讓索引生效那么效率總是更高

(2) primary key 和unique 標識的字段不需要再添加索引,直接就可以利用索引加速查詢

(3) 能用unique的時候盡量不用index,因為普通索引可以是建立再稍有重復的字段,但不可以重復過多的字段(大概重復10%以上不能建立普通索引了)

關于索引的建立和刪除:

# 最好在建表時候考慮好

添加主鍵:

alter table tablename add primary key(列名);

刪除主鍵:

alter table tablename drop primary key;

添加普通索引:

create index 索引名 on 表名(字段名);

刪除普通索引:

drop index 索引名 on 表名;

添加unique:

alter table 表名 add unique (字段);

刪除unique:

alter table 表名 drop index字段;

mysql的語句優化:

(1) 查詢條件字段一定是建立了索引的,如果查詢的條件字段沒有創建索引,那么無效

(2) 查詢條件不能是一個范圍條件,隨著范圍值的增大,索引發揮的作用越小

如:select * from s1 where id > 10000 and email='eva99999@oldboy';? # 這個語句不太好

(3) 使用like模糊查詢,使用abc%形式可以命中索引,但是%abc%不能命中索引

如:

(4) 索引列不要在條件中參與計算,也不要使用函數

(5) 多個索引條件以and相連時候,優先選擇區分度高的索引來進行查詢

如:select * from s1 where id=999 and username='zezhou';

查看mysql語句的執行計劃:

# 可以看到該sql語句命中索引的情況

格式:explain sql語句;

沒建立索引:

建立了索引后:

查看是否命中索引的例子:

總結

以上是生活随笔為你收集整理的mysql 索引查询_mysql索引的建立和查询语句优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。