最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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. 選擇唯一性索引

唯一性索引的值是唯一的,可以更快速的通過該索引來確定某條記錄。例如,學(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)常用來做查詢條件,那么該字段的查詢速度會(huì)影響整個(gè)表的查詢速度。因此,為這樣的字段建立索引,可以提高整個(gè)表的查詢速度。

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

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

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

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

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

如果索引的值很長,那么查詢的速度會(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. 盡量使用前綴來索引

如果索引字段的值很長,最好使用值的前綴來索引。例如,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è)沒意義的值,但是它會(huì)占用物理空間,所以會(huì)帶來的存儲(chǔ)空間的問題,因?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中如何存取List<String>數(shù)據(jù)

    在MySQL中如何存取List<String>數(shù)據(jù)

    這篇文章主要介紹了在MySQL中如何存取List<String>數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • MySQL分庫分表詳情

    MySQL分庫分表詳情

    互聯(lián)網(wǎng)項(xiàng)目中常用到的關(guān)系型數(shù)據(jù)庫是MySQL,隨著用戶和業(yè)務(wù)的增長,傳統(tǒng)的單庫單表模式難以滿足大量的業(yè)務(wù)數(shù)據(jù)存儲(chǔ)以及查詢,單庫單表中大量的數(shù)據(jù)會(huì)使寫入、查詢效率非常之慢,此時(shí)應(yīng)該采取分庫分表策略來解決。本篇文章主要介紹MySQL分庫分表,需要的朋友可以參考一下
    2021-09-09
  • MySQL 5.7.20綠色版安裝詳細(xì)圖文教程

    MySQL 5.7.20綠色版安裝詳細(xì)圖文教程

    MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB公司開發(fā),目前屬于Oracle旗下產(chǎn)品。這篇文章主要介紹了MySQL 5.7.20綠色版安裝詳細(xì)圖文教程,需要的朋友可以參考下
    2017-11-11
  • mysql:Can''t start server: can''t create PID file: No space left on device

    mysql:Can''t start server: can''t create PID file: No space

    這篇文章主要介紹了mysql啟動(dòng)失敗不能正常啟動(dòng)并報(bào)錯(cuò)Can't start server: can't create PID file: No space left on device問題解決方法,需要的朋友可以參考下
    2015-05-05
  • 淺談MySQL next-key lock 加鎖范圍

    淺談MySQL next-key lock 加鎖范圍

    我們知道MYSQL NEXT-KEY LOCK是用來防止幻讀,那么MySQL next-key lock 加鎖范圍是多少,很多人都不知道,本文就來詳細(xì)的介紹一下
    2021-06-06
  • phpMyAdmin下將Excel中的數(shù)據(jù)導(dǎo)入MySql的圖文方法

    phpMyAdmin下將Excel中的數(shù)據(jù)導(dǎo)入MySql的圖文方法

    使用phpMyAdmin將Excel中的數(shù)據(jù)導(dǎo)入MySql,需要將execl導(dǎo)入到mysql數(shù)據(jù)庫的朋友可以參考下。
    2010-08-08
  • SQL行列轉(zhuǎn)置以及非常規(guī)的行列轉(zhuǎn)置示例代碼

    SQL行列轉(zhuǎn)置以及非常規(guī)的行列轉(zhuǎn)置示例代碼

    轉(zhuǎn)置即旋轉(zhuǎn)數(shù)據(jù)表的橫縱方向,常用來改變數(shù)據(jù)布局,以便用新的角度觀察,下面這篇文章主要給大家介紹了關(guān)于SQL行列轉(zhuǎn)置以及非常規(guī)行列轉(zhuǎn)置的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • mysql 安全管理詳情

    mysql 安全管理詳情

    這篇文章主要介紹了mysql 安全管理,MySQL服務(wù)器的安全基礎(chǔ)是用戶應(yīng)該對(duì)他們需要的數(shù)據(jù)具有適當(dāng)?shù)脑L問權(quán),既不能多也不能少,換句話說,用戶不能對(duì)過多的數(shù)據(jù)具有過多的訪問權(quán),下面?zhèn)z看看文章詳細(xì)內(nèi)容吧
    2021-10-10
  • MySQL中的視圖特性和用戶權(quán)限管理詳解

    MySQL中的視圖特性和用戶權(quán)限管理詳解

    文章詳細(xì)介紹了MySQL視圖和用戶管理與權(quán)限控制,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2026-05-05
  • MySQL 添加注釋(comment)的方法步驟

    MySQL 添加注釋(comment)的方法步驟

    本文主要介紹了MySQL添加注釋(comment)的方法步驟,字段或列的注釋是用屬性comment來添加,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05

最新評(píng)論

巩留县| 壶关县| 西充县| 安陆市| 绥滨县| 甘孜| 沁阳市| 介休市| 济南市| 南溪县| 葵青区| 伊通| 义乌市| 桑植县| 藁城市| 新余市| 黄石市| 山丹县| 天全县| 平塘县| 龙陵县| 米脂县| 民丰县| 七台河市| 南康市| 沭阳县| 长岭县| 鸡泽县| 灵寿县| 兴仁县| 和平区| 黑河市| 琼中| 汶川县| 耿马| 广宁县| 泰州市| 锡林郭勒盟| 磐石市| 犍为县| 巫溪县|