鍍金池/ 問答/數(shù)據(jù)庫/ MySQL表500萬+,又不讓分表

MySQL表500萬+,又不讓分表

有一個(gè)表500萬+的數(shù)據(jù),任何超過幾萬的和它關(guān)聯(lián)都會(huì)慢的要死;又不想分表改動(dòng)太大,有什么方法嗎

回答
編輯回答
淡墨

1 確保命中索引。
2 不要一次查太多數(shù)據(jù),分頁查詢。
3 換更好的機(jī)器,上SSD。

2017年12月8日 16:22
編輯回答
不討喜

改動(dòng)成本(越來越大):

  • 優(yōu)化SQL,使用索引,最好是索引全覆蓋

  • 使用MySQL分區(qū)表,不要索引,確保查詢帶分區(qū)字段,保證查詢MySQL掃描的分區(qū)表數(shù)量很小

  • 將關(guān)聯(lián)數(shù)據(jù)放到redis等緩存中查詢

  • 使用分表分庫,這個(gè)時(shí)候數(shù)據(jù)庫結(jié)構(gòu)和代碼都得跟著調(diào)整了

按你的情況,我認(rèn)為使用第二種就夠了,改動(dòng)非常小。

2018年1月23日 07:35