您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關關于mysql的索引是怎樣的,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
一、mysql中的索引是什么?
索引在mysql中也叫做“鍵”,是mysql存儲引擎用于快速找到記錄的一種標記,索引對于提高查詢速度起到了非常關鍵的作用,當表中的數據量足夠大時,索引的作用愈發重要。
創建和維護索引,需要耗費很大的硬盤空間以及時間,但是可以大大的提高查詢速度。
二、在使用索引之前,你需要注意的。
盡可能的去使用一些簡單的數據類型,×××的數據類型比起字符串,處理開銷會小很多,因為字符串的比較更復雜。在MySQL中,應該用內置的日期和時間數據類型,而不是用字符串來存儲時間;以及用整型數據類型存儲IP地址。
盡量避免空值(NULL)推薦給每個字段都指定為not null(除非你想存儲NULL)在MySQL中,含有空值的列很難進行查詢優化,因為它們使得索引、索引的統計信息以及比較運算更加復雜。你應該用0、一個特殊的值或者一個空串代替空值。
不要過度使用索引。
查詢語句后面的where后面比較頻繁的條件,比較適合用索引。
值過于集中的字段,不推薦添加索引,即使加了也不會提高多少效率(比如性別:男/女)
6. 切記不要在索引字段進行運算,例如:select * from users where YEAR(adddate)<2007,將在每個行上進行運算,這將導致索引失效而進行全表掃描,因此我們可以改成:select * from users where adddate<’2007-01-01′。這一個單引號可能會造成mysql近百倍的性能損失。
三、mysql中常用的索引類型。
普通索引:最基本的索引類型,沒有任何的限制,僅僅加快查詢速度。(比較常用)
MyIASM中默認的BTREE類型的索引,也是我們大多數情況下用到的索引。
1.1直接創建一個索引:
CREATE INDEX 索引名稱 ON 表名(字段名)
1.2 在表結構上直接創建索引:
alter table 表名 add index/unique/fulltext[索引名](字段名)
1.3 創建主鍵索引:
alter table 表名 add primary key (字段名)
1.4 刪除一個索引:
刪除一個非主鍵索引:
alter table 表名 drop index 索引名;
刪除主鍵索引:
alter table 表名 drop primary key;
2.唯一索引(unique):字段內的值不可以重復。
與普通索引類似,不同的就是:索引列的值必須唯一,但允許有空值(注意和主鍵不同)。如果是組合索引,則列值的組合必須唯一,創建方法和普通索引類似。
3. 主鍵索引:字段內的值不能重復,雖然主鍵索引的字段不能有重復,但是唯一索引不一定是主鍵。
在一張表上只能有一個主鍵,但是可以有多個唯一索引。
4. 全文索引(full text):
FULLTEXT索引僅可用于 MyISAM 表;他們可以從CHAR、VARCHAR或TEXT列中作為CREATE TABLE語句的一部分被創建,或是隨后使用ALTER TABLE 或CREATE INDEX被添加。
將你的資料輸入一個沒有FULLTEXT索引的表中,然后創建索引,其速度比把資料輸入現有FULLTEXT索引的速度更為快。不過切記對于大容量的數據表,生成全文索引是一個非常消耗時間非常消耗硬盤空間的做法。
–創建表的適合添加全文索引
CREATE TABLE `table` (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
`time` int(10) NULL DEFAULT NULL ,
PRIMARY KEY (`id`),
FULLTEXT (content)
);
–修改表結構添加全文索引
ALTER TABLE article ADD FULLTEXT index_content(content)
–直接創建索引
CREATE FULLTEXT INDEX index_content ON article(content)
5.多列索引:
多個單列索引與單個多列索引的查詢效果不同,因為執行查詢時,MySQL只能使用一個索引,會從多個索引中選擇一個限制最為嚴格的索引。(個人認為,多列索引沒有單列索引查詢效率高)。
以上就是關于mysql的索引是怎樣的,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。