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

mysql 松散的索引掃描(Loose index scan)

 更新時(shí)間:2016年05月29日 23:45:32   投稿:mdxy-dxy  
今天讀《High Performance MySQL》,發(fā)現(xiàn)一個(gè)“Loose index scan”,之前完全沒有聽說過。網(wǎng)上查了些資料,這個(gè)叫松散的索引掃描(Loose index scan)

優(yōu)化Group By最有效的辦法是當(dāng)可以直接使用索引來完全獲取需要group的字段。使用這個(gè)訪問方法時(shí),MySQL使用對(duì)關(guān)鍵字排序的索引的類型(比如BTREE索引)。這使得索引中用于group的字段不必完全涵蓋WHERE條件中索引對(duì)應(yīng)的key。由于只包含索引中關(guān)鍵字的一部分,因此稱為松散的索引掃描。

歷史上MySQL不能做松散的索引掃描,這種方式可以掃描索引的非連續(xù)部分,假定下面的例子中,在列(a,b)上有一索引,要運(yùn)行下面的查詢:

mysql> SELECT … FROM tbl WHERE b BETWEEN 2 AND 3;

因?yàn)樗饕龔牧衋開始,但是WHERE沒制定列a,MySQL將做全表掃描來消除不匹配的行。
很希望有快的方式來執(zhí)行查詢。某些索引結(jié)構(gòu)(不是MySQL)讓你定位到每個(gè)范圍的開始,掃描到范圍結(jié)束,然后跳到下一范圍的開始。
這當(dāng)然是相對(duì)簡(jiǎn)單的例子,也可以很容易通過再加一個(gè)不同的索引來達(dá)到目的。實(shí)際上,很多時(shí)候添加另一個(gè)索引不一定能解決問題。一個(gè)例子是某些查詢?cè)谒饕牡谝粋€(gè)列上有范圍條件在第二個(gè)列上有等價(jià)條件。
從MySQL 5.0 開始,松散索引掃描在一定條件是可能的,比如在分組查詢中找到最大和最小值:

mysql> EXPLAIN SELECT actor_id, MAX(film_id)
-> FROM sakila.film_actor
-> GROUP BY actor_idG
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: film_actor
type: range
possible_keys: NULL
key: PRIMARY
key_len: 2
ref: NULL
rows: 396
Extra: Using index for group-by

在下面一些情況下是可以使用松散索引掃描的:
• 查詢針對(duì)一個(gè)單表。
• GROUP BY包括索引的第1個(gè)連續(xù)部分(如果對(duì)于GROUP BY,查詢有一個(gè)DISTINCT子句,則所有DISTINCT的屬性指向索引開頭)。
• 只使用累積函數(shù)(如果有)MIN()和MAX(),并且它們均指向相同的列。
• 索引的任何其它部分(除了那些來自查詢中引用的GROUP BY)必須為常數(shù)(也就是說,必須按常量數(shù)量來引用它們),但MIN()或MAX() 函數(shù)的參數(shù)例外。

相關(guān)文章

  • mysql 8.0.11壓縮包版本安裝教程

    mysql 8.0.11壓縮包版本安裝教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.11壓縮包版本安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • MYSQL數(shù)據(jù)庫中的現(xiàn)有表增加新字段(列)

    MYSQL數(shù)據(jù)庫中的現(xiàn)有表增加新字段(列)

    MYSQL 增加新字段的sql語句,需要的朋友可以參考下。
    2010-05-05
  • mysql查看鎖表及殺進(jìn)程問題

    mysql查看鎖表及殺進(jìn)程問題

    這篇文章主要介紹了mysql查看鎖表及殺進(jìn)程問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • mysql事務(wù)詳細(xì)介紹

    mysql事務(wù)詳細(xì)介紹

    大家好,本篇文章主要講的是mysql事務(wù)詳細(xì)介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽<BR>
    2021-12-12
  • MySQ索引操作命令總結(jié)(創(chuàng)建、重建、查詢和刪除索引命令詳解)

    MySQ索引操作命令總結(jié)(創(chuàng)建、重建、查詢和刪除索引命令詳解)

    本篇文章主要是對(duì)MySQL索引操作方法做了一下總結(jié),包括創(chuàng)建索引、重建索引、查詢索引、刪除索引的操作
    2014-04-04
  • MySQL使用聚合函數(shù)進(jìn)行單表查詢

    MySQL使用聚合函數(shù)進(jìn)行單表查詢

    這篇文章主要介紹了MySQL使用聚合函數(shù)進(jìn)行單表查詢,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Mysql修改字段類型、長(zhǎng)度及添加刪除列實(shí)例代碼

    Mysql修改字段類型、長(zhǎng)度及添加刪除列實(shí)例代碼

    在MySQL中可以使用ALTER?TABLE語句來修改表結(jié)構(gòu),包括添加自增屬性,下面這篇文章主要給大家介紹了關(guān)于Mysql修改字段類型、長(zhǎng)度及添加刪除列的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • MAC下mysql安裝配置方法圖文教程

    MAC下mysql安裝配置方法圖文教程

    這篇文章主要為大家分享了MAC下mysql安裝配置方法圖文教程,感興趣的朋友可以參考一下
    2016-06-06
  • 手把手教你MySQL運(yùn)算符

    手把手教你MySQL運(yùn)算符

    運(yùn)算符是告訴MySQL執(zhí)行特定算數(shù)或邏輯操作的符號(hào),下面這篇文章主要給大家介紹了關(guān)于MySQL運(yùn)算符的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • mysql函數(shù)之截取字符串的實(shí)現(xiàn)

    mysql函數(shù)之截取字符串的實(shí)現(xiàn)

    本文主要介紹了mysql函數(shù)之截取字符串的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08

最新評(píng)論