欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2013年06月29日 15:48:58   投稿:jingxian  
本篇文章是對Mysql中的列索引和多列索引進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

Mysql數(shù)據(jù)庫提供兩種類型的索引,如果沒正確設(shè)置,索引的利用效率會(huì)大打折扣卻完全不知問題出在這。

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)建列索引的代碼如下:

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)為是包含通過合并(concatenate)索引列值創(chuàng)建的值的一個(gè)排序數(shù)組。 當(dāng)查詢語句的條件中包含last_name 和 first_name時(shí),例如:

SELECT * FROM test WHERE last_name='Kun' AND first_name='Li';

sql會(huì)先過濾出last_name符合條件的記錄,在其基礎(chǔ)上在過濾first_name符合條件的記錄。那如果我們分別在last_name和first_name上創(chuàng)建兩個(gè)列索引,mysql的處理方式就不一樣了,它會(huì)選擇一個(gè)最嚴(yán)格的索引來進(jìn)行檢索,可以理解為檢索能力最強(qiáng)的那個(gè)索引來檢索,另外一個(gè)利用不上了,這樣效果就不如多列索引了。
 
但是多列索引的利用也是需要條件的,以下形式的查詢語句能夠利用上多列索引:

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';

以下形式的查詢語句利用不上多列索引:

SELECT * FROM test WHERE first_name='Michael';
SELECT * FROM test WHERE last_name='Widenius' OR first_name='Michael';

多列建索引比對每個(gè)列分別建索引更有優(yōu)勢,因?yàn)樗饕⒌迷蕉嗑驮秸即疟P空間,在更新數(shù)據(jù)的時(shí)候速度會(huì)更慢。
另外建立多列索引時(shí),順序也是需要注意的,應(yīng)該將嚴(yán)格的索引放在前面,這樣篩選的力度會(huì)更大,效率更高。

相關(guān)文章

  • sqoop export導(dǎo)出 map100% reduce0% 卡住的多種原因及解決

    sqoop export導(dǎo)出 map100% reduce0% 卡住的多種原因及解決

    這篇文章主要介紹了sqoop export導(dǎo)出 map100% reduce0% 卡住的多種原因及解決,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 淺談MySQL中授權(quán)(grant)和撤銷授權(quán)(revoke)用法詳解

    淺談MySQL中授權(quán)(grant)和撤銷授權(quán)(revoke)用法詳解

    下面小編就為大家?guī)硪黄獪\談MySQL中授權(quán)(grant)和撤銷授權(quán)(revoke)用法詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • mysql中整數(shù)數(shù)據(jù)類型tinyint詳解

    mysql中整數(shù)數(shù)據(jù)類型tinyint詳解

    大家好,本篇文章主要講的是mysql中整數(shù)數(shù)據(jù)類型tinyint詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 解決MySQL8.0時(shí)區(qū)的問題步驟

    解決MySQL8.0時(shí)區(qū)的問題步驟

    這篇文章主要介紹了解決MySQL8.0時(shí)區(qū)的問題步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • MySQL中臨時(shí)表的使用示例

    MySQL中臨時(shí)表的使用示例

    這篇文章主要介紹了MySQL中的內(nèi)存臨時(shí)表的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-11-11
  • MySQL中復(fù)合索引和覆蓋索引的區(qū)別詳解

    MySQL中復(fù)合索引和覆蓋索引的區(qū)別詳解

    這篇文章主要介紹了MySQL中復(fù)合索引和覆蓋索引的區(qū)別詳解,復(fù)合索引是一種索引,它包含多個(gè)字段,復(fù)合索引能夠使一個(gè)SQL查詢多個(gè)條件時(shí)也能走索引,提高查詢性能,需要的朋友可以參考下
    2023-11-11
  • mysql日志文件General_log和Binlog開啟及詳解

    mysql日志文件General_log和Binlog開啟及詳解

    MySQL中的數(shù)據(jù)變化會(huì)體現(xiàn)在上面日志中,下面這篇文章主要給大家介紹了關(guān)于mysql日志文件General_log和Binlog開啟及詳解的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • mysql取得datetime類型的數(shù)據(jù),后面會(huì)跟個(gè).0的實(shí)現(xiàn)方法

    mysql取得datetime類型的數(shù)據(jù),后面會(huì)跟個(gè).0的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猰ysql取得datetime類型的數(shù)據(jù),后面會(huì)跟個(gè).0的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • PHP中ORDER BY子句的詳細(xì)用法教程

    PHP中ORDER BY子句的詳細(xì)用法教程

    這篇文章主要介紹了PHP中ORDER BY子句的詳細(xì)用法教程,文中提供了PHP腳本下的操作示例,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • MySQL?數(shù)據(jù)庫如何實(shí)現(xiàn)存儲(chǔ)時(shí)間

    MySQL?數(shù)據(jù)庫如何實(shí)現(xiàn)存儲(chǔ)時(shí)間

    這篇文章主要介紹了MySQL?數(shù)據(jù)庫如何實(shí)現(xiàn)存儲(chǔ)時(shí)間,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論