按鍵掃描 - 單次模式,連按模式,長按模式
阿新 • • 發佈:2020-12-22
MySQL索引是什麼
新華字典的 目錄 相對於字典中的 內容 就類似於資料庫的 索引 類似於資料庫中 資料 。
MySQL索引有什麼用
像上述描述一樣,目錄是為了快速便捷查詢內容,索引也一樣。加快資料檢索速度。
當然看待事物都是辯證性的,有優點就有缺點。
加上目錄意味著要多用一些紙,分類越多消耗越多(按拼音、部首、偏旁等)。加上目錄的前提下如果要在字典裡新增/刪除/修改一個字,對應的目錄是不是也要調整。同理,索引也一樣:
建立索引會佔用磁碟空間的索引檔案;
降低更新表的速度,如對錶進行INSERT、UPDATE和DELETE。
MySQL索引分類
- 單列索引
- 主鍵索引:列的值不允許重複,不允許有空值,如常見的id。一個表只能有一個主鍵。
- 唯一索引:列的值不允許重複,允許有空值
- 普通索引:最基本的索引,char和varchar可以指定length建立前n個字元的索引,blob和text型別必須制定length。
- 全文索引:只有在char、varchar、text使用,用來查詢文字中的關鍵字,配合match against操作。
- 組合索引:多個列組合成的索引。使用時遵循最左字首集合。
#普通索引 建表時:index indexname(‘欄位名‘(length)) 建表後:create index indexname on ’tablename’(‘欄位名’(length)) Alter table tablename add index indexname(‘欄位名‘(length))#唯一索引 建表時:unique index indexname(‘欄位名‘(length)) 建表後:create unique index indexname on ’tablename’(‘欄位名’(length)) Alter table tablename add unique index indexname(‘欄位名‘(length))
#主鍵索引 primary key
#全文索引 建表時:fulltext index indexname(‘欄位名‘(length)) 建表後:create fulltext index indexname on ’tablename’(‘欄位名’(length)) Alter table tablename add fulltext index indexname(‘欄位名‘(length)) 使用:select * from tablename where match(column1,column2) against(‘xxx’,’sss’,’ddd’);查詢column1column2中含xxx,sss,ddd的記錄
#組合索引
建表時:index indexname(‘欄位名‘(length),‘欄位名‘(length))
建表後:create index indexname on ’tablename’(‘欄位名’(length),‘欄位名‘(length))
Alter table tablename add index indexname(‘欄位名‘(length),‘欄位名‘(length))
索引刪除
drop index indexname on tablename
索引失效情況
1、條件中使用了or
除非每個or的條件都建索引
2、遵循最左字首規則
3、使用範圍查詢。以%、<、>開頭或使用,其右邊所有列無法使用索引
4、列型別為字串,查詢的資料必須用引號引起來,否則不使用索引
5、索引列不能是表示式或函式的一部分