MySQL索引分類和各自用途
Memory存儲引擎可以選擇Hash或BTree索引,Hash索引只能用于=或<=>的等式比較。
1、普通索引:create index on Tablename(列的列表)
alter table TableName add index (列的列表)
create table TableName([...], index [IndexName] (列的列表)
2、唯一性索引:create unique index
alter ... add unique
主鍵:一種唯一性索引,必須指定為primary key
3、全文索引:從3.23.23版開始支持全文索引和全文檢索,FULLTEXT,
可以在char、varchar或text類型的列上創建。
4、單列索引、多列索引:
多個單列索引與單個多列索引的查詢效果不同,因為:
執行查詢時,MySQL只能使用一個索引,會從多個索引中選擇一個限制最為嚴格的索引。
5、最左前綴(Leftmost Prefixing):多列索引,例如:fname_lname_age索引,以下的搜索條件MySQL都將使用
fname_lname_age索引:firstname,lastname,age;firstname,lastname;firstname,其他情況將不使用。
二、根據sql查詢語句確定創建哪種類型的索引,如何優化查詢
選擇索引列:
a.性能優化過程中,選擇在哪個列上創建索引是最重要的步驟之一。可以考慮使用索引的主要有
兩種類型的列:在where子句中出現的列,在join子句中出現的列。
b.考慮列中值的分布,索引的列的基數越大,索引的效果越好。
c.使用短索引,如果對字符串列進行索引,應該指定一個前綴長度,可節省大量索引空間,提升查詢速度。
d.利用最左前綴
e.不要過度索引,只保持所需的索引。每個額外的索引都要占用額外的磁盤空間,并降低寫操作的性能。
在修改表的內容時,索引必須進行更新,有時可能需要重構,因此,索引越多,所花的時間越長。
MySQL只對一下操作符才使用索引:<,<=,=,>,>=,between,in,
以及某些時候的like(不以通配符%或_開頭的情形)。
關鍵字:MySQL、索引、磁盤空間
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解