亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Mysql提升索引效率優(yōu)化的八種方法總結(jié)

 更新時(shí)間:2024年04月16日 10:32:51   作者:it技術(shù)分享just_free  
索引實(shí)際上也是一張表,保存了主鍵和索引的字段,并且指向?qū)嶓w表的記錄,所以索引也是需要占用空間的,這篇文章主要給大家介紹了關(guān)于Mysql提升索引效率優(yōu)化的八種方法,需要的朋友可以參考下

前言

索引的設(shè)計(jì)可以遵循一些已有的原則,創(chuàng)建索引的時(shí)候應(yīng)盡量考慮符合這些原則,便于提升索引的使用效率,更高效的使用索引。本節(jié)將介紹一些索引的設(shè)計(jì)原則。

1. 選擇唯一性索引

唯一性索引的值是唯一的,可以更快速的通過(guò)該索引來(lái)確定某條記錄。例如,學(xué)生表中學(xué)號(hào)是具有唯一性的字段。為該字段建立唯一性索引可以很快的確定某個(gè)學(xué)生的信息。如果使用姓名的話,可能存在同名現(xiàn)象,從而降低查詢速度。

2. 為經(jīng)常需要排序、分組和聯(lián)合操作的字段建立索引

經(jīng)常需要 ORDER BY、GROUP BY、DISTINCT 和 UNION 等操作的字段,排序操作會(huì)浪費(fèi)很多時(shí)間。如果為其建立索引,可以有效地避免排序操作。

3. 為常作為查詢條件的字段建立索引

如果某個(gè)字段經(jīng)常用來(lái)做查詢條件,那么該字段的查詢速度會(huì)影響整個(gè)表的查詢速度。因此,為這樣的字段建立索引,可以提高整個(gè)表的查詢速度。

注意:常查詢條件的字段不一定是所要選擇的列,換句話說(shuō),最適合索引的列是出現(xiàn)在 WHERE 子句中的列,或連接子句中指定的列,而不是出現(xiàn)在 SELECT 關(guān)鍵字后的選擇列表中的列。

4. 限制索引的數(shù)目

索引的數(shù)目不是“越多越好”。每個(gè)索引都需要占用磁盤空間,索引越多,需要的磁盤空間就越大。在修改表的內(nèi)容時(shí),索引必須進(jìn)行更新,有時(shí)還可能需要重構(gòu)。因此,索引越多,更新表的時(shí)間就越長(zhǎng)。

如果有一個(gè)索引很少利用或從不使用,那么會(huì)不必要地減緩表的修改速度。此外,MySQL 在生成一個(gè)執(zhí)行計(jì)劃時(shí),要考慮各個(gè)索引,這也要花費(fèi)時(shí)間。創(chuàng)建多余的索引給查詢優(yōu)化帶來(lái)了更多的工作。索引太多,也可能會(huì)使 MySQL 選擇不到所要使用的最佳索引。

5. 盡量使用數(shù)據(jù)量少的索引

如果索引的值很長(zhǎng),那么查詢的速度會(huì)受到影響。例如,對(duì)一個(gè) CHAR(100) 類型的字段進(jìn)行全文檢索需要的時(shí)間肯定要比對(duì) CHAR(10) 類型的字段需要的時(shí)間要多。

6. 數(shù)據(jù)量小的表最好不要使用索引

由于數(shù)據(jù)較小,查詢花費(fèi)的時(shí)間可能比遍歷索引的時(shí)間還要短,索引可能不會(huì)產(chǎn)生優(yōu)化效果。

7. 盡量使用前綴來(lái)索引

如果索引字段的值很長(zhǎng),最好使用值的前綴來(lái)索引。例如,TEXT 和 BLOG 類型的字段,進(jìn)行全文檢索會(huì)很浪費(fèi)時(shí)間。如果只檢索字段的前面的若干個(gè)字符,這樣可以提高檢索速度。

8. 刪除不再使用或者很少使用的索引

表中的數(shù)據(jù)被大量更新,或者數(shù)據(jù)的使用方式被改變后,原有的一些索引可能不再需要。應(yīng)該定期找出這些索引,將它們刪除,從而減少索引對(duì)更新操作的影響。

9. 索引最好設(shè)置為 NOT NULL:

索引列存在 NULL 就會(huì)導(dǎo)致優(yōu)化器在做索引選擇的時(shí)候更加復(fù)雜,更加難以優(yōu)化,因?yàn)榭蔀?NULL 的列會(huì)使索引、索引統(tǒng)計(jì)和值比較都更復(fù)雜,比如進(jìn)行索引統(tǒng)計(jì)時(shí),count 會(huì)省略值為NULL 的行。

NULL 值是一個(gè)沒(méi)意義的值,但是它會(huì)占用物理空間,所以會(huì)帶來(lái)的存儲(chǔ)空間的問(wèn)題,因?yàn)?InnoDB 存儲(chǔ)記錄的時(shí)候,如果表中存在允許為 NULL 的字段,那么行格式 中至少會(huì)用 1 字節(jié)空間存儲(chǔ) NULL 值列表。

10. 防止索引失效:

我們?cè)O(shè)置了索引并不意味著一定會(huì)用上索引,再某些情況下索引也會(huì)失效。

  • 當(dāng)我們使用左或者左右模糊匹配的時(shí)候,也就是 Link %x 或者 Link %x% 這兩種方式都會(huì)造成索引失效;
  • 當(dāng)我們?cè)诓樵儣l件中對(duì)索引列做了計(jì)算、函數(shù)、類型轉(zhuǎn)換操作,這些情況下都會(huì)造成索引失效;
  • 聯(lián)合索引要能正確使用需要遵循最左匹配原則,也就是按照最左優(yōu)先的方式進(jìn)行索引的匹配,否則就會(huì)導(dǎo)致索引失效。
  • 在 WHERE 子句中,如果在 or 前的條件列是索引列,而在 or 后的條件列不是索引列,那么索引會(huì)失效。

總結(jié)

選擇索引的最終目的是為了使查詢的速度變快,上面給出的原則是最基本的準(zhǔn)則,但不能只拘泥于上面的準(zhǔn)則。應(yīng)該在學(xué)習(xí)和工作中不斷的實(shí)踐,根據(jù)應(yīng)用的實(shí)際情況進(jìn)行分析和判斷,選擇最合適的索引方式。

相關(guān)文章

  • mysql去重查詢的三種方法小結(jié)

    mysql去重查詢的三種方法小結(jié)

    本文主要介紹了mysql去重查詢的三種方法小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • mysql計(jì)算時(shí)間差函數(shù)

    mysql計(jì)算時(shí)間差函數(shù)

    MySql計(jì)算兩個(gè)日期的時(shí)間差函數(shù)TIMESTAMPDIFF用法,只要用一句SQL語(yǔ)句就可以辦到了。
    2013-11-11
  • MySQL使用explain命令查看與分析索引的使用情況

    MySQL使用explain命令查看與分析索引的使用情況

    這篇文章主要介紹了MySQL使用explain命令查看與分析索引的使用情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Navicat工具中設(shè)置MySQL允許外部訪問(wèn)

    Navicat工具中設(shè)置MySQL允許外部訪問(wèn)

    默認(rèn)情況下MySQL只允許本地登錄,即只能在安裝MySQL環(huán)境所在的主機(jī)下訪問(wèn),這篇文章主要給大家介紹了關(guān)于Navicat工具中設(shè)置MySQL允許外部訪問(wèn)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • mysql經(jīng)典4張表問(wèn)題詳細(xì)講解

    mysql經(jīng)典4張表問(wèn)題詳細(xì)講解

    MySQL是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),可以通過(guò)連接不同的表將數(shù)據(jù)進(jìn)行關(guān)聯(lián)查詢,下面這篇文章主要給大家介紹了關(guān)于mysql經(jīng)典4張表問(wèn)題的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • mysql 5.6.17 綠色版(免安裝)安裝配置教程

    mysql 5.6.17 綠色版(免安裝)安裝配置教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.6.17 綠色版(免安裝)安裝配置教程,感興趣的小伙伴們可以參考一下
    2016-07-07
  • node連接mysql數(shù)據(jù)庫(kù)遇到的問(wèn)題和解決方案

    node連接mysql數(shù)據(jù)庫(kù)遇到的問(wèn)題和解決方案

    這篇文章主要介紹了node連接mysql數(shù)據(jù)庫(kù)遇到的問(wèn)題和解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • mysql的基礎(chǔ)語(yǔ)句和外鍵查詢及其語(yǔ)句詳解(推薦)

    mysql的基礎(chǔ)語(yǔ)句和外鍵查詢及其語(yǔ)句詳解(推薦)

    這篇文章主要介紹了mysql的基礎(chǔ)語(yǔ)句和外鍵查詢及其語(yǔ)句詳解(推薦),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-04-04
  • Mysql數(shù)據(jù)庫(kù)delete操作沒(méi)報(bào)錯(cuò)卻刪除不了數(shù)據(jù)的解決

    Mysql數(shù)據(jù)庫(kù)delete操作沒(méi)報(bào)錯(cuò)卻刪除不了數(shù)據(jù)的解決

    本文主要介紹了Mysql數(shù)據(jù)庫(kù)delete操作沒(méi)報(bào)錯(cuò)卻刪除不了數(shù)據(jù)的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • MySQL按常規(guī)排序、自定義排序和按中文拼音字母排序的方法

    MySQL按常規(guī)排序、自定義排序和按中文拼音字母排序的方法

    MySQL常規(guī)排序、自定義排序和按中文拼音字母排序,在實(shí)際的SQL編寫時(shí),我們有時(shí)候需要對(duì)條件集合進(jìn)行排序。下面給出3種比較常用的排序方式,一起看看吧
    2017-04-04

最新評(píng)論