婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 詳解mysql索引總結----mysql索引類型以及創建

詳解mysql索引總結----mysql索引類型以及創建

熱門標簽:桂林云電銷機器人收費 清遠申請400電話 南通電銷外呼系統哪家強 沈陽智能外呼系統供應商 谷歌地圖標注位置圖解 手機外呼系統違法嗎 如何選擇優質的外呼系統 東莞外呼企業管理系統 地圖簡圖標注

關于MySQL索引的好處,如果正確合理設計并且使用索引的MySQL是一輛蘭博基尼的話,那么沒有設計和使用索引的MySQL就是一個人力三輪車。對于沒有索引的表,單表查詢可能幾十萬數據就是瓶頸,而通常大型網站單日就可能會產生幾十萬甚至幾百萬的數據,沒有索引查詢會變的非常緩慢。還是以WordPress來說,其多個數據表都會對經常被查詢的字段添加索引,比如wp_comments表中針對5個字段設計了BTREE索引。

 一個簡單的對比測試

以我去年測試的數據作為一個簡單示例,20多條數據源隨機生成200萬條數據,平均每條數據源都重復大概10萬次,表結構比較簡單,僅包含一個自增ID,一個char類型,一個text類型和一個int類型,單表2G大小,使用MyIASM引擎。開始測試未添加任何索引。

執行下面的SQL語句:

mysql> SELECT id,FROM_UNIXTIME(time) FROM article WHERE a.title='測試標題' 

查詢需要的時間非常恐怖的,如果加上聯合查詢和其他一些約束條件,數據庫會瘋狂的消耗內存,并且會影響前端程序的執行。這時給title字段添加一個BTREE索引:

mysql> ALTER TABLE article ADD INDEX index_article_title ON title(200); 

再次執行上述查詢語句,其對比非常明顯:

MySQL索引的概念

索引是一種特殊的文件(InnoDB數據表上的索引是表空間的一個組成部分),它們包含著對數據表里所有記錄的引用指針。更通俗的說,數據庫索引好比是一本書前面的目錄,能加快數據庫的查詢速度。上述SQL語句,在沒有索引的情況下,數據庫會遍歷全部200條數據后選擇符合條件的;而有了相應的索引之后,數據庫會直接在索引中查找符合條件的選項。如果我們把SQL語句換成“SELECT * FROM article WHERE id=2000000”,那么你是希望數據庫按照順序讀取完200萬行數據以后給你結果還是直接在索引中定位呢?上面的兩個圖片鮮明的用時對比已經給出了答案(注:一般數據庫默認都會為主鍵生成索引)。

索引分為聚簇索引和非聚簇索引兩種,聚簇索引是按照數據存放的物理位置為順序的,而非聚簇索引就不一樣了;聚簇索引能提高多行檢索的速度,而非聚簇索引對于單行的檢索很快。

 MySQL索引的類型

1. 普通索引

這是最基本的索引,它沒有任何限制,比如上文中為title字段創建的索引就是一個普通索引,MyIASM中默認的BTREE類型的索引,也是我們大多數情況下用到的索引。

 –直接創建索引 

CREATE INDEX index_name ON table(column(length)) 

–修改表結構的方式添加索引 

ALTER TABLE table_name ADD INDEX index_name ON (column(length)) 

–創建表的時候同時創建索引 

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`), 


 INDEX index_name (title(length)) 


 ) 

–刪除索引 

DROP INDEX index_name ON table 

2. 唯一索引

與普通索引類似,不同的就是:索引列的值必須唯一,但允許有空值(注意和主鍵不同)。如果是組合索引,則列值的組合必須唯一,創建方法和普通索引類似。

–創建唯一索引 


 CREATE UNIQUE INDEX indexName ON table(column(length)) 


 –修改表結構 


 ALTER TABLE table_name ADD UNIQUE indexName ON (column(length)) 


 –創建表的時候直接指定 


 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`), 


 UNIQUE indexName (title(length)) 


 ); 

3. 全文索引(FULLTEXT)

MySQL從3.23.23版開始支持全文索引和全文檢索,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) 

4. 單列索引、多列索引

多個單列索引與單個多列索引的查詢效果不同,因為執行查詢時,MySQL只能使用一個索引,會從多個索引中選擇一個限制最為嚴格的索引。

5. 組合索引(最左前綴)

平時用的SQL查詢語句一般都有比較多的限制條件,所以為了進一步榨取MySQL的效率,就要考慮建立組合索引。例如上表中針對title和time建立一個組合索引:ALTER TABLE article ADD INDEX index_titme_time (title(50),time(10))。建立這樣的組合索引,其實是相當于分別建立了下面兩組組合索引:

–title,time

–title

為什么沒有time這樣的組合索引呢?這是因為MySQL組合索引“最左前綴”的結果。簡單的理解就是只從最左面的開始組合。并不是只要包含這兩列的查詢都會用到該組合索引,如下面的幾個SQL所示:

 –使用到上面的索引 
SELECT * FROM article WHREE title='測試' AND time=1234567890; 
SELECT * FROM article WHREE utitle='測試';

–不使用上面的索引 
SELECT * FROM article WHREE time=1234567890;

 MySQL索引的優化

上面都在說使用索引的好處,但過多的使用索引將會造成濫用。因此索引也會有它的缺點:雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對表進行INSERT、UPDATE和DELETE。因為更新表時,MySQL不僅要保存數據,還要保存一下索引文件。建立索引會占用磁盤空間的索引文件。一般情況這個問題不太嚴重,但如果你在一個大表上創建了多種組合索引,索引文件的會膨脹很快。索引只是提高效率的一個因素,如果你的MySQL有大數據量的表,就需要花時間研究建立最優秀的索引,或優化查詢語句。下面是一些總結以及收藏的MySQL索引的注意事項和優化方法。

1. 何時使用聚集索引或非聚集索引?

動作描述 使用聚集索引 使用非聚集索引
列經常被分組排序 使用 使用
返回某范圍內的數據 使用 不使用
一個或極少不同值 不使用 不使用
小數目的不同值 使用 不使用
大數目的不同值 不使用 使用
頻繁更新的列 不使用 使用
外鍵列 使用 使用
主鍵列 使用 使用
頻繁修改索引列 不使用 使用

事實上,我們可以通過前面聚集索引和非聚集索引的定義的例子來理解上表。如:返回某范圍內的數據一項。比如您的某個表有一個時間列,恰好您把聚合索引建立在了該列,這時您查詢2004年1月1日至2004年10月1日之間的全部數據時,這個速度就將是很快的,因為您的這本字典正文是按日期進行排序的,聚類索引只需要找到要檢索的所有數據中的開頭和結尾數據即可;而不像非聚集索引,必須先查到目錄中查到每一項數據對應的頁碼,然后再根據頁碼查到具體內容。其實這個具體用法我還不是很理解,只能等待后期的項目開發中慢慢學學了。

2. 索引不會包含有NULL值的列

只要列中包含有NULL值都將不會被包含在索引中,復合索引中只要有一列含有NULL值,那么這一列對于此復合索引就是無效的。所以我們在數據庫設計時不要讓字段的默認值為NULL。

3. 使用短索引

對串列進行索引,如果可能應該指定一個前綴長度。例如,如果有一個CHAR(255)的列,如果在前10個或20個字符內,多數值是惟一的,那么就不要對整個列進行索引。短索引不僅可以提高查詢速度而且可以節省磁盤空間和I/O操作。

4. 索引列排序

MySQL查詢只使用一個索引,因此如果where子句中已經使用了索引的話,那么order by中的列是不會使用索引的。因此數據庫默認排序可以符合要求的情況下不要使用排序操作;盡量不要包含多個列的排序,如果需要最好給這些列創建復合索引。

5. like語句操作

一般情況下不鼓勵使用like操作,如果非使用不可,如何使用也是一個問題。like “%aaa%” 不會使用索引而like “aaa%”可以使用索引。

6. 不要在列上進行運算

例如:select * from users where YEAR(adddate)2007,將在每個行上進行運算,這將導致索引失效而進行全表掃描,因此我們可以改成:select * from users where adddate'2007-01-01′。關于這一點可以圍觀:一個單引號引發的MYSQL性能損失。

最后總結一下,MySQL只對一下操作符才使用索引:,=,=,>,>=,between,in,以及某些時候的like(不以通配符%或_開頭的情形)。而理論上每張表里面最多可創建16個索引,不過除非是數據量真的很多,否則過多的使用索引也不是那么好玩的,比如我剛才針對text類型的字段創建索引的時候,系統差點就卡死了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • MySQL 索引的優缺點以及創建索引的準則
  • MySQL字符串索引更合理的創建規則討論
  • MySQL使用命令創建、刪除、查詢索引的介紹
  • 怎樣正確創建MySQL索引的方法詳解
  • 圖文詳解MySQL中兩表關聯的連接表如何創建索引
  • MySQL創建全文索引分享
  • MySQL查看、創建和刪除索引的方法
  • mysql 添加索引 mysql 如何創建索引
  • MySQL創建索引需要了解的

標簽:內蒙古 天津 重慶 成都 臨沂 常德 貴州 湖州

巨人網絡通訊聲明:本文標題《詳解mysql索引總結----mysql索引類型以及創建》,本文關鍵詞  詳解,mysql,索引,總結,----mysql,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解mysql索引總結----mysql索引類型以及創建》相關的同類信息!
  • 本頁收集關于詳解mysql索引總結----mysql索引類型以及創建的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲最新视频在线观看| 国产亚洲精品精华液| 666欧美在线视频| 一区二区三区四区av| 91麻豆.com| 自拍偷拍欧美激情| 成人久久18免费网站麻豆| 国产日韩精品一区| 国产成人av资源| 国产日韩高清在线| 丁香一区二区三区| 亚洲色图在线视频| 欧美日韩免费观看一区三区| 亚洲午夜一二三区视频| 欧美精品一二三四| 日本sm残虐另类| 91精品国产色综合久久不卡蜜臀 | 美国十次了思思久久精品导航| 在线欧美一区二区| 日本女优在线视频一区二区| 精品美女一区二区| 粉嫩av一区二区三区粉嫩| 亚洲欧美电影一区二区| 91精品国产高清一区二区三区蜜臀| 麻豆精品国产91久久久久久| 国产人久久人人人人爽| 99r精品视频| 天天做天天摸天天爽国产一区| 欧美成人精品高清在线播放| 粉嫩久久99精品久久久久久夜 | 亚洲一区二区三区自拍| 欧美福利一区二区| 国产成人av影院| 一区二区三区欧美日韩| 欧美成人欧美edvon| 色女孩综合影院| 久久精品国产在热久久| 亚洲精品精品亚洲| 日韩免费成人网| 91福利视频网站| 国产精品一卡二| 日本视频免费一区| 一区二区三区日韩| 中文一区二区完整视频在线观看| 欧美日韩一区 二区 三区 久久精品| 国产精品综合网| 日本不卡一区二区三区| 最新国产成人在线观看| 精品国产乱码久久久久久牛牛| 欧美视频一区二区在线观看| 国产99久久久国产精品免费看 | 日日骚欧美日韩| 国产精品久久久一区麻豆最新章节| 欧美人妇做爰xxxⅹ性高电影| 国产精品亚洲专一区二区三区| 婷婷综合五月天| 一区二区三区中文免费| 国产精品三级久久久久三级| 欧美成人bangbros| 91精品国产综合久久福利软件 | 国产一区二区三区久久悠悠色av| 亚洲一区在线观看免费观看电影高清 | 中文字幕色av一区二区三区| 久久久天堂av| 国产色综合久久| 久久亚洲欧美国产精品乐播| 正在播放亚洲一区| 91麻豆精品国产91久久久久久| 日本高清成人免费播放| 成人高清视频免费观看| 成人黄色av电影| 国产一级精品在线| 国产精品一二三| 国产a久久麻豆| 国产精品18久久久久久vr| 国产精品1区2区3区在线观看| 国产一区在线精品| 粉嫩高潮美女一区二区三区| 国产麻豆成人传媒免费观看| 丰满少妇在线播放bd日韩电影| 成人app软件下载大全免费| 成人国产精品视频| 欧洲精品中文字幕| 制服丝袜亚洲色图| 26uuu欧美| 欧美日韩免费高清一区色橹橹| 日韩一级黄色大片| 精品奇米国产一区二区三区| 亚洲黄色尤物视频| 亚洲二区在线观看| 美女视频一区二区| 美腿丝袜在线亚洲一区| 久久精品国产77777蜜臀| 美女脱光内衣内裤视频久久网站| 久久99日本精品| av高清久久久| 欧美精品久久99久久在免费线 | 久久久久久久久伊人| 国产精品久久久久精k8| 亚洲一区二区三区免费视频| 日韩成人免费电影| 国产91色综合久久免费分享| 91久久久免费一区二区| 欧美一区二区三区成人| 国产欧美一区视频| 午夜精品视频一区| 色婷婷精品大视频在线蜜桃视频| 欧美日韩一二三| 久久免费视频色| 一区2区3区在线看| 秋霞国产午夜精品免费视频| 成人的网站免费观看| 7777精品伊人久久久大香线蕉完整版| 精品1区2区在线观看| 一区二区三区在线观看国产| 国产一区在线视频| 91精品视频网| 一区二区在线观看不卡| 国产风韵犹存在线视精品| 在线播放国产精品二区一二区四区 | av不卡在线播放| 日韩欧美国产一区在线观看| 亚洲欧洲www| 国产精品1024久久| 日韩免费观看高清完整版| 一区二区日韩电影| aaa亚洲精品一二三区| 欧美精品一区男女天堂| 亚洲综合一区二区三区| www.一区二区| 久久蜜臀精品av| 国产剧情在线观看一区二区| 制服丝袜中文字幕一区| 亚洲一卡二卡三卡四卡| 91片在线免费观看| 欧美国产日产图区| 国产精品性做久久久久久| 欧美r级电影在线观看| 青青草国产精品97视觉盛宴| 欧美日韩中文精品| 一区二区三区中文字幕精品精品 | 欧美日韩一区久久| 亚洲欧美一区二区不卡| 一本久久综合亚洲鲁鲁五月天| 欧美激情一区二区三区在线| 岛国精品一区二区| |精品福利一区二区三区| 91在线视频免费观看| 一区二区三区中文字幕| 欧美日韩国产大片| 日本特黄久久久高潮| 亚洲精品在线免费观看视频| 国产高清视频一区| 国产精品嫩草影院av蜜臀| 99精品视频在线观看免费| 亚洲最新在线观看| 日韩精品一区二区三区swag | 日韩国产成人精品| 欧美精品精品一区| 久久国产三级精品| 国产精品成人免费精品自在线观看| 国产一区91精品张津瑜| 亚洲精品videosex极品| 欧美日韩综合色| 精品一二线国产| 国产日产欧美一区二区三区 | 欧美极品aⅴ影院| 色综合天天综合网国产成人综合天| 中文字幕一区av| 欧美日韩国产综合一区二区| 久久精品国产在热久久| 亚洲视频一区二区在线| 欧美浪妇xxxx高跟鞋交| 国产一区二区伦理片| 一区二区免费看| 精品国产乱码久久久久久牛牛 | 欧美激情在线一区二区三区| 欧美在线观看你懂的| 国产剧情一区二区三区| 亚洲一卡二卡三卡四卡| 精品国产区一区| 一本久久a久久精品亚洲| 国产精品综合二区| 亚洲国产精品麻豆| 久久久久成人黄色影片| 欧美日韩亚洲综合在线| av在线不卡电影| 精品午夜一区二区三区在线观看| 亚洲日本中文字幕区| 精品国产乱码久久久久久图片| 欧美日韩视频在线观看一区二区三区 | 色综合久久中文字幕| 美国av一区二区| 一区二区三区日韩| 国产精品乱码久久久久久| 日韩一区二区三区在线| 欧美亚洲免费在线一区| 91色视频在线| 国产91综合网| 久久99国产精品麻豆|