高效能的索引策略
isolating the column
孤立列就是說,這一列不能在表達示中或在乙個函式裡面,如
mysql> select actor_id from actor where actor_id + 1 = 5; 錯誤
再如:mysql> select ... where to_days(current_date) - to_days(date_col) <= 10;
prefix indexes and index selectivity
當你索引乙個非常長的字串時,你的索引會變大變慢,這時你可以只索引字串前面幾個字元,但這會導致你的索引的「選擇性」降低。
索引選擇性(index selectivity)是唯一索引數/總行數(#t),大小從1/#t到1.
如果你索引的列是blob、text或是很長的varchar,那麼mysql會強制你使用字首索引。
問題在於:如何找到最合適的字首長度。
假設有一張城市的表,你要對城市名稱做索引
那麼mysql> select count(*) as cnt, city
得到這樣的結果。
現在我們試著找出字首的出現頻率
每個字首出的出鏡率都很高,這時我們加長字首的長度
這時字首索引的頻率已經和完全索引差不多,我們認為這是個不錯的長度。
字首索引的缺點:無法在order by 和 group by查詢中被使用,也不能把它們做為covering indexes來使用。
MySql系列 (二) MySql索引
索引可以理解為字典的音序表一樣,可以根據它來查詢匹配的資料項。實際上索引是一種對資料表的一列或多列字段進行排序的資料結構,常見的索引資料結構就是b 樹 什麼是b 樹?索引主要是啟提高資料查詢的效率,幫助我們快速的在大量資料中定位到我們要找的資料。簡單的例子 下面這張表有4個字段,主鍵id 會員id ...
mysql 索引 二 2 MySQL索引
一 索引介紹 索引是一種資料結構,用於幫助我們在大量資料中快速定位到我們想要查詢的資料。索引在mysql中也叫做 鍵 是儲存引擎用於快速找到記錄的一種資料結構。索引對於良好的效能非常關鍵,尤其是當表中的資料量越來越大時,索引對於效能的影響愈發重要。索引優化應該是對查詢效能優化最有效的手段了。索引能夠...
mysql索引怎麼學 mysql學習 索引
在平時開發過程中寫sql時,我們通常都不太關心sql的效能,只有能給查出來資料,sql的執行速度不是太慢就不會去管它了。但是開發時期的資料量往往都不是太大,很多效能問題只有在生產環境中才會發現,如 資料過多 sql關聯了太多的表,使用了太多的join 或者建立了索引,但是索引失效的問題。所以要解決這...