数据库SQL索引
一、索引的意義
表中創建索引,以便更加快速高效地查詢數據。
用戶無法看到索引,它們只能被用來加速搜索/查詢。
注釋:更新一個包含索引的表需要比更新一個沒有索引的表花費更多的時間,這是由于索引本身也需要更新。因此,理想的做法是僅僅在常常被搜索的列(以及表)上面創建索引。
?
二、索引創建與刪除、查看
(1)創建索引
1、在表上創建一個簡單的索引。允許使用重復的值。索引不止一個列,可以在括號中列出這些列的名稱,用逗號隔開。
CREATE INDEX index_name?ON table_name (column_name1,..,column_nameN)
?
2、在表上創建一個唯一的索引。不允許使用重復的值。唯一的索引意味著兩個行不能擁有相同的索引值。
CREATE UNIQUE INDEX index_name?ON table_name (column_name1,..,column_nameN)
?
3、在創建表時創建索引
CREATE TABLE ?table_name (
? ? ?...,
? ? index ?index_name (column_name[(length)])
);
4、修改表時創建索引
ALTER TABLE table_name ADD UNIQUE index_name (column_list);
?
(2)刪除索引
DROP INDEX [index_name] ON table_name;
?
(3)查看索引
SHOW INDEX FROM?table_name;
?
三、查詢不走索引情況
近期筆試兩次遇到了回答索引不使用的情況
(1)建立組合索引,但查詢謂詞并未使用組合索引的第一列,此處有一個INDEX SKIP SCAN概念
(2)索引列可能包含空值
(3)索引列上有函數操作或者運算操作,導致不走索引
(4)索引不適用于隱式轉換的情況
(5)負向條件查詢
? ? ? ? !=或者<>(不等于),? not in , not exist,可能導致不走索引,也可能走 INDEX FAST FULL SCAN
(6)like '%liu' 百分號在前
?
?
總結
- 上一篇: 电脑版荒野行动对电脑配置要求高吗?
- 下一篇: linux cmake编译源码,linu