2012-01-24 178 views
0
  1. 我有一個表將現包含超過43萬條記錄。要執行SELECT,我通常選擇與同場的記錄,說A。這將是更有效的通過不同A表分爲幾個表,並保存在數據庫中?我能賺多少錢?提高MySQL的效率

  2. 我有一個名爲entry: {entryid (PK), B}的表,其中包含6千條記錄,其他幾個表的結構類似T1: {id(PK), entryid, C, ...},其中包含數百萬條記錄。以下兩個流程是否具有相同的效率?

    SELECT id FROM T1, entry WHERE T1.entryid = entry.entryid AND entry.B = XXX

SELECT entryid FROM entry WHERE B = XXX 
//format a string S as (entryid1, entryid2, ...) 
//then run 
SELECT id FROM T1 WHERE entryid IN S 
+1

你爲什麼不衡量這一切? –

+0

嘗試使用explain關鍵字,並確保您的索引儘可能好,如果您想快速選擇。 –

+0

@DerekOrgan什麼是解釋關鍵字? – DrXCheng

回答

1
  1. 您將獲得的性能提升。您不必手動執行此操作,但可以使用內置的MySQL partitioning。你會得到多少真正取決於你的配置,這將是你最好的測試它。舉例來說,如果你有怪物服務器,43M的記錄是什麼,你不會得到與分區那麼多(但你應該得到改善反正)。
  2. 對於這個問題,我會說,第一次查詢會快很多。

但是,這將是最好的衡量你的結果,因爲它可能取決於你的硬件coonfiguration,索引(使用EXPLAIN來檢查,如果你有正確的索引),你的MySQL設置,如查詢緩存的大小,和發動機你使用(MYISAM,InnoDB)...