1. 程式人生 > 實用技巧 >按鍵掃描 - 單次模式,連按模式,長按模式

按鍵掃描 - 單次模式,連按模式,長按模式

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、索引列不能是表示式或函式的一部分