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

mysql 索引創(chuàng)建

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

回答
編輯回答
夢(mèng)若殤

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

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

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

2018年7月16日 21:57