数据库SQL索引
一、索引的意義
表中創(chuàng)建索引,以便更加快速高效地查詢數(shù)據(jù)。
用戶無(wú)法看到索引,它們只能被用來(lái)加速搜索/查詢。
注釋:更新一個(gè)包含索引的表需要比更新一個(gè)沒(méi)有索引的表花費(fèi)更多的時(shí)間,這是由于索引本身也需要更新。因此,理想的做法是僅僅在常常被搜索的列(以及表)上面創(chuàng)建索引。
?
二、索引創(chuàng)建與刪除、查看
(1)創(chuàng)建索引
1、在表上創(chuàng)建一個(gè)簡(jiǎn)單的索引。允許使用重復(fù)的值。索引不止一個(gè)列,可以在括號(hào)中列出這些列的名稱,用逗號(hào)隔開(kāi)。
CREATE INDEX index_name?ON table_name (column_name1,..,column_nameN)
?
2、在表上創(chuàng)建一個(gè)唯一的索引。不允許使用重復(fù)的值。唯一的索引意味著兩個(gè)行不能擁有相同的索引值。
CREATE UNIQUE INDEX index_name?ON table_name (column_name1,..,column_nameN)
?
3、在創(chuàng)建表時(shí)創(chuàng)建索引
CREATE TABLE ?table_name (
? ? ?...,
? ? index ?index_name (column_name[(length)])
);
4、修改表時(shí)創(chuàng)建索引
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)建立組合索引,但查詢謂詞并未使用組合索引的第一列,此處有一個(gè)INDEX SKIP SCAN概念
(2)索引列可能包含空值
(3)索引列上有函數(shù)操作或者運(yùn)算操作,導(dǎo)致不走索引
(4)索引不適用于隱式轉(zhuǎn)換的情況
(5)負(fù)向條件查詢
? ? ? ? !=或者<>(不等于),? not in , not exist,可能導(dǎo)致不走索引,也可能走 INDEX FAST FULL SCAN
(6)like '%liu' 百分號(hào)在前
?
?
總結(jié)
- 上一篇: 电脑版荒野行动对电脑配置要求高吗?
- 下一篇: Tomcat配置虚拟内存