Mysql數(shù)據(jù)庫(kù)提供兩種類(lèi)型的索引,如果沒(méi)正確設(shè)置,索引的利用效率會(huì)大打折扣卻完全不知問(wèn)題出在這,
正確理解Mysql中的列索引和多列索引
。復(fù)制代碼代碼如下:
CREATE TABLE test (
id INT NOT NULL,
last_name CHAR(30) NOT NULL,
first_name CHAR(30) NOT NULL,
PRIMARY KEY (id),
INDEX name (last_name,first_name)
);
以上創(chuàng)建的其實(shí)是一個(gè)多列索引,創(chuàng)建列索引的代碼如下:
復(fù)制代碼代碼如下:
CREATE TABLE test (
id INT NOT NULL,
last_name CHAR(30) NOT NULL,
first_name CHAR(30) NOT NULL,
PRIMARY KEY (id),
INDEX name (last_name),
INDEX_2 name (first_name)
);
一個(gè)多列索引可以認(rèn)為是包含通過(guò)合并(concatenate)索引列值創(chuàng)建的值的一個(gè)排序數(shù)組。 當(dāng)查詢(xún)語(yǔ)句的條件中包含last_name 和 first_name時(shí),例如:
復(fù)制代碼代碼如下:
SELECT * FROM test WHERE last_name='Kun' AND first_name='Li';
sql會(huì)先過(guò)濾出last_name符合條件的記錄,在其基礎(chǔ)上在過(guò)濾first_name符合條件的記錄。那如果我們分別在last_name和first_name上創(chuàng)建兩個(gè)列索引,mysql的處理方式就不一樣了,它會(huì)選擇一個(gè)最嚴(yán)格的索引來(lái)進(jìn)行檢索,可以理解為檢索能力最強(qiáng)的那個(gè)索引來(lái)檢索,另外一個(gè)利用不上了,這樣效果就不如多列索引了。
但是多列索引的利用也是需要條件的,以下形式的查詢(xún)語(yǔ)句能夠利用上多列索引:
復(fù)制代碼代碼如下:
SELECT * FROM test WHERE last_name='Widenius';
SELECT * FROM test WHERE last_name='Widenius' AND first_name='Michael';
SELECT * FROM test WHERE last_name='Widenius' AND (first_name='Michael' OR first_name='Monty');
SELECT * FROM test WHERE last_name='Widenius' AND first_name >='M' AND first_name < 'N';
以下形式的查詢(xún)語(yǔ)句利用不上多列索引:
復(fù)制代碼代碼如下:
SELECT * FROM test WHERE first_name='Michael';
SELECT * FROM test WHERE last_name='Widenius' OR first_name='Michael';
多列建索引比對(duì)每個(gè)列分別建索引更有優(yōu)勢(shì),因?yàn)樗饕⒌迷蕉嗑驮秸即疟P(pán)空間,在更新數(shù)據(jù)的時(shí)候速度會(huì)更慢,
電腦資料
《正確理解Mysql中的列索引和多列索引》(http://m.msguai.com)。另外建立多列索引時(shí),順序也是需要注意的,應(yīng)該將嚴(yán)格的索引放在前面,這樣篩選的力度會(huì)更大,效率更高。
您可能感興趣的文章:
MySQL 索引分析和優(yōu)化
mysql 索引分類(lèi)以及用途分析
QQ空間 搜狐微博 人人網(wǎng) 開(kāi)心網(wǎng) 百度搜藏更多
Tags:Mysql 列索引 多列索引
復(fù)制鏈接收藏本文打印本文關(guān)閉本文返回首頁(yè)
上一篇:mysql創(chuàng)建函數(shù)出現(xiàn)1418錯(cuò)誤的解決辦法
下一篇:21分鐘 MySQL 入門(mén)教程
相關(guān)文章
2012-06-06Mysql CPU占用高的問(wèn)題解決方法小結(jié)
2013-06-06淺析mysql 語(yǔ)句的調(diào)度優(yōu)先級(jí)及改變
2013-07-07mysql中engine=innodb和engine=myisam的區(qū)別介紹
2008-12-12mysql 忘記密碼的解決方法(linux和windows小結(jié))
2012-02-02什么是blob,mysql blob大小配置介紹
2012-11-11MySQL DNS的使用過(guò)程詳細(xì)分析
2009-09-09MySQL 隨機(jī)密碼生成代碼
2014-05-05mysql too many open connections問(wèn)題解決方法
2014-06-06Mysql索引會(huì)失效的幾種情況分析
2010-08-08mysql免安裝制作使用說(shuō)明
文章評(píng)論
最 近 更 新
mysql 觸發(fā)器實(shí)現(xiàn)兩個(gè)表的數(shù)據(jù)同步
MySQL中使用case when 語(yǔ)句實(shí)現(xiàn)多條件查詢(xún)
mysql自增ID起始值修改方法
SQL查詢(xún)超時(shí)的設(shè)置方法(關(guān)于timeout的處理
修改mysql默認(rèn)字符集的兩種方法詳細(xì)解析
解析mysql數(shù)據(jù)庫(kù)還原錯(cuò)誤:(mysql Error C
mysql導(dǎo)出導(dǎo)入中文表解決方法
MySQL中視圖的使用及多表INNER JOIN的技巧
cmd連接mysql的方法詳解
MYSQL explain 執(zhí)行計(jì)劃
熱 點(diǎn) 排 行
mysql安裝圖解 mysql圖文安裝教程
超詳細(xì)mysql left join,right jo
Can''t connect to MySQL server
Mysql命令行導(dǎo)入sql數(shù)據(jù)
MYSQL 數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出命令
Mysql字符串截取函數(shù)SUBSTRING的
MySQL數(shù)據(jù)庫(kù)備份與恢復(fù)方法
MySQL server has gone away 問(wèn)題
windows下mysql忘記root密碼的解
MySQL日期數(shù)據(jù)類(lèi)型、時(shí)間類(lèi)型使用