国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

正確理解Mysql中的列索引和多列索引

2024-07-24 13:02:18
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
Mysql數(shù)據(jù)庫(kù)提供兩種類(lèi)型的索引,如果沒(méi)正確設(shè)置,索引的利用效率會(huì)大打折扣卻完全不知問(wèn)題出在這。

復(fù)制代碼 代碼如下:


CREATE TABLE test (
idINT 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 (
idINT 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ì)更慢。
另外建立多列索引時(shí),順序也是需要注意的,應(yīng)該將嚴(yán)格的索引放在前面,這樣篩選的力度會(huì)更大,效率更高。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 辽阳县| 新巴尔虎左旗| 广饶县| 武乡县| 邵武市| 漳浦县| 九龙县| 巍山| 安乡县| 清苑县| 祁连县| 望江县| 治县。| 衡南县| 惠东县| 呼伦贝尔市| 柳州市| 三门县| 扬州市| 太保市| 新乐市| 固始县| 铜鼓县| 澎湖县| 赤壁市| 淳安县| 依安县| 佛山市| 富阳市| 全椒县| 图们市| 红原县| 三门峡市| 洞头县| 资源县| 通山县| 淮南市| 柳江县| 瑞金市| 承德县| 兴仁县|