2 回答
TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
建議思路, 上面示例代碼,皆是大批量的查詢,增加適當(dāng)?shù)乃饕?查看執(zhí)行時(shí)的執(zhí)行計(jì)劃, 從右到左查看其數(shù)據(jù)流, 能盡早CUT掉的數(shù)據(jù)就盡早用WHERE條件去掉, 分析最合適的索引建在需要的表上, 在建索引時(shí)盡量Include選擇中的所有列, 保證索引覆蓋,如列太多, 將此索引建為聚族索引
補(bǔ)上面關(guān)于分表與緩存的建議:
分表:你上面示例中至少有70列, 得仔細(xì)看它們的數(shù)據(jù)類型, 如若一行超過8K,則分表勢在必行, 因?yàn)闀?huì)造成一行分在兩個(gè)不同的頁里面存儲(chǔ), 導(dǎo)致IO降低。
緩存:SQL會(huì)自動(dòng)緩存的, 如果客戶的條件中有很多一樣的, 則可以預(yù)跑一些數(shù)據(jù)來進(jìn)行緩存, 如大多都不一樣, 如包含當(dāng)前時(shí)間等參數(shù), 緩存則沒多少意義。
TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
數(shù)據(jù)量太大的話要分表,我目前的做法是把要統(tǒng)計(jì)的部分用分表存儲(chǔ),然后加上緩存,也就是用空間換時(shí)間的做法
- 2 回答
- 0 關(guān)注
- 1454 瀏覽
添加回答
舉報(bào)
