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

mysql下普通索引和唯一索引的效率對(duì)比

 更新時(shí)間:2010年12月17日 13:59:24   作者:  
昨天有位同事說(shuō),他的網(wǎng)頁(yè)查詢過(guò)程中發(fā)現(xiàn)普通索引和唯一索引的效率是有差別的,普通索引比唯一索引快

今天在我的虛擬機(jī)中布置了環(huán)境,測(cè)試抓圖如下:

抓的這幾個(gè)都是第一次執(zhí)行的,刷了幾次后,取平均值,效率大致相同,而且如果在一個(gè)列上同時(shí)建唯一索引和普通索引的話,mysql會(huì)自動(dòng)選擇唯一索引。

谷歌一下:

唯一索引和普通索引使用的結(jié)構(gòu)都是B-tree,執(zhí)行時(shí)間復(fù)雜度都是O(log n)。

補(bǔ)充下概念:

1、普通索引

 

  普通索引(由關(guān)鍵字KEY或INDEX定義的索引)的唯一任務(wù)是加快對(duì)數(shù)據(jù)的訪問(wèn)速度。因此,應(yīng)該只為那些最經(jīng)常出現(xiàn)在查詢條件(WHEREcolumn=)或排序條件(ORDERBYcolumn)中的數(shù)據(jù)列創(chuàng)建索引。只要有可能,就應(yīng)該選擇一個(gè)數(shù)據(jù)最整齊、最緊湊的數(shù)據(jù)列(如一個(gè)整數(shù)類型的數(shù)據(jù)列)來(lái)創(chuàng)建索引。

2、唯一索引

  普通索引允許被索引的數(shù)據(jù)列包含重復(fù)的值。比如說(shuō),因?yàn)槿擞锌赡芡酝粋€(gè)姓名在同一個(gè)“員工個(gè)人資料”數(shù)據(jù)表里可能出現(xiàn)兩次或更多次。

如果能確定某個(gè)數(shù)據(jù)列將只包含彼此各不相同的值,在為這個(gè)數(shù)據(jù)列創(chuàng)建索引的時(shí)候就應(yīng)該用關(guān)鍵字UNIQUE把它定義為一個(gè)唯一索引。這么做的好處:一是簡(jiǎn)化了MySQL對(duì)這個(gè)索引的管理工作,這個(gè)索引也因此而變得更有效率;二是MySQL會(huì)在有新記錄插入數(shù)據(jù)表時(shí),自動(dòng)檢查新記錄的這個(gè)字段的值是否已經(jīng)在某個(gè)記錄的這個(gè)字段里出現(xiàn)過(guò)了;如果是,MySQL將拒絕插入那條新記錄。也就是說(shuō),唯一索引可以保證數(shù)據(jù)記錄的唯一性。事實(shí)上,在許多場(chǎng)合,人們創(chuàng)建唯一索引的目的往往不是為了提高訪問(wèn)速度,而只是為了避免數(shù)據(jù)出現(xiàn)重復(fù)。

注:

終于找到同事說(shuō)執(zhí)行效率不一樣的原因了,他在普通索引上創(chuàng)建的是前綴索引,只取了前16個(gè)字節(jié),而唯一索引使用的全字節(jié) :)

相關(guān)文章

  • mysql按照時(shí)間分組查詢的語(yǔ)句

    mysql按照時(shí)間分組查詢的語(yǔ)句

    這篇文章主要介紹了mysql按照時(shí)間分組查詢的語(yǔ)句,非常實(shí)用,sql語(yǔ)句簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • 關(guān)于case when語(yǔ)句的報(bào)錯(cuò)問(wèn)題詳解

    關(guān)于case when語(yǔ)句的報(bào)錯(cuò)問(wèn)題詳解

    SQL CASE 表達(dá)式是一種通用的條件表達(dá)式,類似于其它語(yǔ)言中的 if/else 語(yǔ)句,下面這篇文章主要給大家介紹了關(guān)于case when語(yǔ)句的報(bào)錯(cuò)問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-08-08
  • MYSQL讀寫性能測(cè)試的簡(jiǎn)單記錄

    MYSQL讀寫性能測(cè)試的簡(jiǎn)單記錄

    本文主要介紹了MYSQL讀寫性能測(cè)試的簡(jiǎn)單記錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 深入探究MySQL事務(wù)實(shí)現(xiàn)原理

    深入探究MySQL事務(wù)實(shí)現(xiàn)原理

    數(shù)據(jù)庫(kù)事務(wù)是指一組數(shù)據(jù)庫(kù)操作,這些操作必須被視為一個(gè)不可分割的單元,要么全部執(zhí)行成功,要么全部失敗回滾,本文詳細(xì)的給大家介紹了MySQL事務(wù)的實(shí)現(xiàn)原理,對(duì)我們學(xué)習(xí)MySQL有一定的幫助,感興趣的同學(xué)可以跟著小編一起來(lái)探究
    2023-06-06
  • MySQL中查詢當(dāng)前時(shí)間間隔前1天的數(shù)據(jù)

    MySQL中查詢當(dāng)前時(shí)間間隔前1天的數(shù)據(jù)

    實(shí)際項(xiàng)目中我們都會(huì)遇到分布式定時(shí)任務(wù)執(zhí)行的情況,今天通過(guò)本文給大家分享MySQL中查詢當(dāng)前時(shí)間間隔前1天的數(shù)據(jù),查詢sql語(yǔ)句給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧<BR>
    2021-12-12
  • MySQL查看和修改最大連接數(shù)的方法步驟

    MySQL查看和修改最大連接數(shù)的方法步驟

    使用MySQL 數(shù)據(jù)庫(kù)的站點(diǎn),當(dāng)訪問(wèn)連接數(shù)過(guò)多時(shí),就會(huì)出現(xiàn) "Too many connections" 的錯(cuò)誤,所以我們需要設(shè)置MySQL查看和修改最大連接數(shù),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • Idea 如何導(dǎo)入Mysql8.0驅(qū)動(dòng)jar包

    Idea 如何導(dǎo)入Mysql8.0驅(qū)動(dòng)jar包

    IDEA中的庫(kù)(Libraries)就是用來(lái)存放外部jar包,我們的項(xiàng)目或模塊需要某些jar包時(shí),可以從這里把包導(dǎo)入到模塊依賴(Dependencies)中,本文給大家介紹Idea 如何導(dǎo)入Mysql8.0驅(qū)動(dòng)jar包,感興趣的朋友一起看看吧
    2023-12-12
  • mysql?count()函數(shù)不計(jì)算null和空值問(wèn)題

    mysql?count()函數(shù)不計(jì)算null和空值問(wèn)題

    這篇文章主要介紹了mysql?count()函數(shù)不計(jì)算null和空值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • MySql的事務(wù)使用與示例詳解

    MySql的事務(wù)使用與示例詳解

    這篇文章主要介紹了MySqld的事務(wù)用法,需要的朋友可以參考下
    2014-06-06
  • MySQL錯(cuò)誤代碼:1052?Column?'xxx'?in?field?list?is?ambiguous的原因和解決

    MySQL錯(cuò)誤代碼:1052?Column?'xxx'?in?field?list?is

    今天在工作中寫sql語(yǔ)句時(shí)遇到了個(gè)sql錯(cuò)誤,為記錄并不再重復(fù)出錯(cuò),下面這篇文章主要給大家介紹了關(guān)于MySQL錯(cuò)誤代碼:1052?Column?'xxx'?in?field?list?is?ambiguous的原因和解決方法,需要的朋友可以參考下
    2023-04-04

最新評(píng)論