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

mysql關(guān)于or的索引的問題及解決

 更新時(shí)間:2023年08月30日 10:05:00   作者:某科學(xué)的南條  
這篇文章主要介紹了mysql關(guān)于or的索引的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mysql關(guān)于or的索引問題

用UNION替換OR (適用于索引列)

在下面的例子中,LOC_ID 和REGION上都建有索引*

高效:

select loc_id , loc_desc , region from location where loc_id = 10 ??
union ??
select loc_id , loc_desc , region ?from location where region = "melbourne" ??

低效:

select loc_id , loc desc , region from location where loc_id = 10 or region = "melbourne"?

如果你堅(jiān)持要用OR,那就需要返回記錄最少的索引列寫在最前面。

mysql or不走索引分析

select * from tableName where a=1 and (b=1 or c=1)

其中建立了ab和ac的聯(lián)合索引,但是看db監(jiān)控慢查詢的掃描行數(shù)和a=1的行數(shù)相同。

通過explain看出執(zhí)行計(jì)劃是走ab的聯(lián)合索引,但是為啥掃描行數(shù)卻是a=1的行數(shù)呢?

猜測是因?yàn)橐閍=1 and b=1的數(shù)據(jù)時(shí)候,可以走ab索引,但是查出 a=1和c=1的數(shù)據(jù),就需要掃描a=1的所有數(shù)據(jù)。

可以通過聯(lián)合索引的數(shù)據(jù)結(jié)構(gòu)看出,當(dāng)a相同時(shí)候,會(huì)按照b來排序。

而且mysql一般不會(huì)選擇走多個(gè)索引,除非要索引合并,但是通過explain看出來并沒有索引合并。

所以只會(huì)走ab的索引&掃描a=1的所有數(shù)據(jù)來獲取c=1的數(shù)據(jù)。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 服務(wù)器不支持 MySql 數(shù)據(jù)庫的解決方法

    服務(wù)器不支持 MySql 數(shù)據(jù)庫的解決方法

    出現(xiàn)問題:報(bào)錯(cuò)“服務(wù)器不支持 MySql 數(shù)據(jù)庫”,改函數(shù)function_exists('mysql_connect')返回 false
    2013-03-03
  • Mysql 5.7.19 免安裝版配置方法教程詳解(64位)

    Mysql 5.7.19 免安裝版配置方法教程詳解(64位)

    這篇文章主要介紹了Mysql 5.7.19 免安裝版配置方法教程詳解,需要的朋友可以參考下
    2017-08-08
  • 解決MySQL安裝重裝時(shí)出現(xiàn)could not start the service mysql error:0問題的方法

    解決MySQL安裝重裝時(shí)出現(xiàn)could not start the service mysql error:0問題的方法

    這篇文章主要為大家詳細(xì)介紹了解決MySQL安裝重裝時(shí)出現(xiàn)could not start the service mysql error:0問題的方法,感興趣的小伙伴們可以參考一下
    2016-06-06
  • MySQL如何配置my.ini文件

    MySQL如何配置my.ini文件

    文章介紹了如何修改my.ini文件以解決數(shù)據(jù)庫忘記密碼或其他基礎(chǔ)問題,首先,需要停止數(shù)據(jù)庫服務(wù),然后創(chuàng)建并編輯my.ini文件,設(shè)置數(shù)據(jù)庫字符集、緩沖池大小等參數(shù),接著,刪除舊的data文件夾并重新生成,配置my.ini文件時(shí)要注意命名規(guī)范
    2025-01-01
  • Mysql時(shí)間軸數(shù)據(jù) 獲取同一天數(shù)據(jù)的前三條

    Mysql時(shí)間軸數(shù)據(jù) 獲取同一天數(shù)據(jù)的前三條

    這篇文章主要介紹了Mysql時(shí)間軸數(shù)據(jù) 獲取同一天數(shù)據(jù)的前三條 ,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • mysql中mydumper 和 mysqldump 對比使用

    mysql中mydumper 和 mysqldump 對比使用

    MySQL數(shù)據(jù)庫備份工具有其自帶的mysqldump,屬于mysql官方的一款備份工具。但是第三方備份工具mydumper憑借優(yōu)越的特點(diǎn)為更多人所使用。下面就通過測試驗(yàn)證它們之間的備份效率。
    2017-05-05
  • Mysql關(guān)于數(shù)據(jù)庫是否應(yīng)該使用外鍵約束詳解說明

    Mysql關(guān)于數(shù)據(jù)庫是否應(yīng)該使用外鍵約束詳解說明

    MySQL 外鍵約束(FOREIGN KEY)是表的一個(gè)特殊字段,經(jīng)常與主鍵約束一起使用。對于兩個(gè)具有關(guān)聯(lián)關(guān)系的表而言,相關(guān)聯(lián)字段中主鍵所在的表就是主表,外鍵所在的表就是從表。外鍵用來建立主表與從表的關(guān)聯(lián)關(guān)系,為兩個(gè)表的數(shù)據(jù)建立連接,約束兩個(gè)表中數(shù)據(jù)的一致性和完整性
    2021-10-10
  • MySQL數(shù)據(jù)庫之事務(wù)簡析

    MySQL數(shù)據(jù)庫之事務(wù)簡析

    這篇文章主要介紹了MySQL數(shù)據(jù)庫之事務(wù)簡析,MySQL數(shù)據(jù)庫中的事務(wù)是一組數(shù)據(jù)庫操作,它們被視為一個(gè)整體,要么全部執(zhí)行成功,要么全部失敗回滾,MySQL支持四種事務(wù)隔離級(jí)別,其中默認(rèn)的事務(wù)隔離級(jí)別是REPEATABLE?READ,需要的朋友可以參考下
    2023-09-09
  • MySQL分庫分表與分區(qū)的入門指南

    MySQL分庫分表與分區(qū)的入門指南

    這篇文章主要給大家介紹了關(guān)于MySQL分庫分表與分區(qū)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • MySQL獲取數(shù)據(jù)庫內(nèi)所有表格數(shù)據(jù)總數(shù)的示例代碼

    MySQL獲取數(shù)據(jù)庫內(nèi)所有表格數(shù)據(jù)總數(shù)的示例代碼

    在 MySQL 中,要獲取數(shù)據(jù)庫內(nèi)所有表格的數(shù)據(jù)總數(shù),可以編寫一個(gè)查詢腳本來遍歷每個(gè)表并計(jì)算其行數(shù),所以本文給大家介紹了MySQL獲取數(shù)據(jù)庫內(nèi)所有表格數(shù)據(jù)總數(shù)的示例,需要的朋友可以參考下
    2024-11-11

最新評(píng)論