一、 mysql: 索引以b樹格式儲存
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索引分類和各自用途
一 mysql 索引以b樹格式儲存 memory儲存引擎可以選擇hash或btree索引,hash索引只能用於 或 的等式比較。1 普通索引 create index on tablename 列的列表 alter table tablename add index 列的列表 create tabl...
常見的系統日誌及各自用途
常見的系統日誌及各自用途 日誌訊息的優先順序 高 低 rhel7提供的journalctl日誌工具的常見用法 journalctl u 服務名 p 優先順序 journalctl n 訊息條數 檢視登入成功的訊息 root host50 last 2 root pts 1 192.168.4.254...
MySQL索引 索引的分類和索引匹配
q1 發現一些sql語句比較慢,怎麼去建立索引?q2 在寫sql語句時,有哪些點會造成索引失效?1.主鍵索引當給表建立了主鍵時,其他資料會按照主鍵來組織,這就是主鍵索引 2.唯一索引 unique 給一列設定了值是唯一的,不允許有重複值出現 3.普通索引 又叫二級索引或者普通索引 除了主鍵和唯一鍵建...