日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

高性能索引策略一

發(fā)布時間:2025/3/16 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高性能索引策略一 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

高效的選擇和使用索引有很多方式,有的是針對特殊案例的優(yōu)化方法,有的則是針對特定行為的優(yōu)化,使用哪個索引,以及如何評估選擇不同索引的性能影響的技巧,則需要持續(xù)不斷地學習。(本文章需要一定索引基礎)

1.索引要是獨立的列

  “獨立的列”是指索引列不能是表達式的一部分,也不能是函數(shù)的參數(shù)。例如,下面這個查詢無法使用actor_id列的索引

    mysql>SELECT actor_id FROM sakila.actor WHERE actor_id + 1 = 5;

  憑肉眼很容易看出WHERE中的表達式其實等價與 actor_id = 4,但是MySQL無法自動解析這個方程式。這完全是用戶行為。我們應該養(yǎng)成簡化WHERE條件的習慣,始終將索引列單獨放在比較符號的一側

  下面是另一個常見的錯誤:

    mysql>SELECT ...? WHERE TO_DAYS(CURRENT_DATE) - TO_DAYS(date_col) <= 10;

2.前綴索引和索引的選擇性

  索引的選擇性:?

    索引的選擇性是指? ?不重復的索引值(也稱之為基數(shù))和數(shù)據(jù)表記錄總數(shù)(#T)的比值,范圍從1/#T到1之間。索引的選擇性越高則查詢效率越高。唯一索引的選擇性是一,這是最好的索引選擇性,性能也是最好的。

    對于BLOB、TEXT或者很長的VARCHAR類型的列。必須使用前綴索引,因為mysql不允許索引這些列的完整長度。

    前綴索引選擇前綴長度的訣竅在于選擇足夠長的前綴以保證較高的選擇性,通知用不能太長(以便節(jié)約空間),足夠長的長度以使得前綴索引的選擇性接近于索引的整個列

    如何計算合適的前綴長度?

     計算整列的選擇性,并使前綴的選擇性接近完成列的選擇性

      計算完整列的選擇性

      mysql>SELECT COUNT(DISTINCT city)/COUNT(*) city_demo;

      計算不同前綴長度的選擇性:

      mysql>SELECT COUNT(DISTINCT LEFT(city, 3))/COUNT(*) AS sel3,

      COUNT(DISTINCT LEFT(city, 4))/COUNT(*) AS sel4,

      COUNT(DISTINCT LEFT(city, 5))/COUNT(*) AS sel5,

      COUNT(DISTINCT LEFT(city, 6))/COUNT(*) AS sel6,

      COUNT(DISTINCT LEFT(city, 7))/COUNT(*) AS sel7,

      FROM city_demo;

      求出的前綴選擇性接近于完整列的選擇性基本上就可以用了,但要注意,只看平均選擇性是不夠的,也有例外的情況需要考慮最壞情況下的選擇性。

  前面已經(jīng)說明如何找到合適的前綴長度,下面掩飾一下如何創(chuàng)建前綴索引

    mysql>ALTER TABLE city_demo ADD KEY (city(7));

?

轉載于:https://www.cnblogs.com/skl-bobo/p/10411577.html

總結

以上是生活随笔為你收集整理的高性能索引策略一的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。