鍍金池/ 問答/數(shù)據(jù)庫/ mysql 索引創(chuàng)建

mysql 索引創(chuàng)建

時間 ,金額 ,狀態(tài), 用戶 ID 。
四個字段如果要創(chuàng)建一個組合索引,以提高搜索效率,該如何組合會更優(yōu)化一些?
具體作用是要用于后臺管理使用的。因為考慮到每個都可能頻繁使用,所以也都不能確定誰先開頭會比較合適。
希望有大佬給提供意見參考。感謝。

回答
編輯回答
夢若殤

MySQL的索引主要指的是BTree索引,需要遵循最左前綴原則,常規(guī)的做法會根據(jù)select語句對索引進行定制,像這種后臺管理的場景,sql基本是拼接的,可以說沒有固定索引,這種情況,可以使用以下方案進行優(yōu)化:

  1. 暫時不建索引,把MySQL的慢查詢打開,對系統(tǒng)中的慢查詢進行統(tǒng)計分析,然后有針對性的進行索引優(yōu)化
  2. 使用MySQL主從架構(gòu),在從庫上進行查詢,系統(tǒng)會慢,但保證不對主庫造成影響
  3. 放棄MySQL,使用搜索引擎技術(shù),及基于lucene的Solr或es
2017年6月21日 15:34
編輯回答
怣人

你這個需求根本不需要用到組合索引啊
用戶ID單獨索引,時間單獨索引就行了
具體原因,是因為索引只在你查的數(shù)量低于總函數(shù)的20%才起作用
也就是說,狀態(tài)這種低唯一性的字段不加索引
金額這個數(shù)字確實是高唯一性,但是他的update應(yīng)該挺頻繁,如果給他加了索引,意味著每次update都要重建索引,所以這個字段也不適合加索引

2018年7月16日 21:57