索引 加快查找 可以理解為創(chuàng)建了一個索引目錄每次查找會在目錄中找到位置.(例子:字典)
1.占用內(nèi)存磁盤
2.目的 快速查找 對于主鍵有
3.普通索引 主鍵索引 聯(lián)合索引 唯一索引
4.聯(lián)合索引(多列組成的)) 最左邊匹配 第一個必須是最左 其他隨意匹配
包含最左即可
普通的列組成 index 索引名稱(列1)
主鍵聯(lián)合索引 primary key(列1和二,列2,)
唯一聯(lián)合索引? unique key(列1耳胎,列2惯吕,)
在已經(jīng)存在的表中添加索引:
alter table 表名 add 列名 數(shù)據(jù)類型 約束 primary key();
alter table 表名 add 列名 數(shù)據(jù)類型 約束 unique key()怕午;
添加普通索引:
create index 索引名稱 on tablename(列,..) on表示在哪一個表里面
添加唯一索引:
create unique index 索引名稱 on tablename(列,..)
刪除一個索引:
drop index 索引名稱 on 表名
刪除唯一索引:
drop unique index 索引名稱 on 表名
如何修改索引名稱废登??郁惜?
索引根據(jù)搜索引擎分類:
設(shè)置索引和不設(shè)置索引的區(qū)別:
? ? 不設(shè)置:從上往下依次查找
? ? 設(shè)置”ぞ唷:會額外生成一個數(shù)據(jù)文件(索引文件)
hash 索引:memary 基于內(nèi)存的存儲引擎
? ? 索引表(根據(jù)列的值生成哈希值) 并且記錄當前列在表中的地址這個hash表的索引
? ? 存儲順序跟我們的表的順序不一致 查尋單個較快
btree 索引:(二叉樹算法)幾乎支持所有的存儲引擎
? ? 查找的速度相對快
兩個名詞的概念:
? ? 覆蓋索引:select name from 表名 where name='張三';
? ? ? ? 前后保持一致
? ? ? ? 建立索引后 查尋數(shù)據(jù)時直接在索引形成的索引文件中查找 不會再去數(shù)據(jù)表中查尋
? ? 索引的合并:
? ? ? ? name,email,phone,多個索引為查尋條件
? ? ? ? select * from 表名 where name='值' and email='值'
#注意點
創(chuàng)建索引的時候要注意的知識:
1.創(chuàng)建一個索引,提高了查找效率 犧牲了增刪改的效率
2.會加大磁盤空間的開銷
3.設(shè)置最短索引
? ? text 文本很長不設(shè)置會顯示所有 可以截取索引
? ? create index indeaname on 表名(列(16))
4.命中索引:
? ? 主鍵除外
索引選擇原則
? ? 較頻繁的作為查詢條件的字段應(yīng)該創(chuàng)建索引
? ? 唯一性太差的字段不適合單獨創(chuàng)建索引兆蕉,即頻繁作為查詢條件
? ? 更新非常頻繁的字段不適合創(chuàng)建索引
? ? 不會出現(xiàn)在 WHERE 子句中的字段不該創(chuàng)建索引
? ? 不精確<> 不確定的不能