3
處理需要從數據庫傳輸大量數據的應用程序。它包括SELECT和UPDATE查詢(即讀取和寫入數據庫)。MySQL基準測試:1個查詢返回1000行VS 1000單行查詢
首先,我需要獲得所有產品的清單(約1000個SKU)。 SELECT查詢非常簡單:
SELECT
*
FROM
`my_db`.`products`
然後對每個產品進行一些自動更新。更新查詢是這樣的:
UPDATE
`my_db`.`products`
SET
`updated` = NOW(),
`mods` = `mods` + 1,
/* a couple more updated fields here, if needed */
現在的問題是哪一個會更快/更好地執行:即一次與所有記錄操縱單個查詢,或PHP循環(如foreach
或while
)與每個產品分開使用(1000個單行查詢)?當然,後者需要WHERE model = 'ABC'
和LIMIT 1
。
爲了使事情更加複雜(和全面的),想其他影響的標準,例如:
- 如果是針對不同的行數:100或10萬?
- 如果涉及多個表格怎麼辦?查看下面的JOINed查詢的示例。
。
SELECT
*
FROM
`my_db`.`table1` AS `t1`
INNER JOIN `my_db`.`table2` AS `t2` ON `t1`.`id` = `t2`.`fk`
INNER JOIN `my_db`.`table3` AS `t3` ON `t2`.`id` = `t3`.`fk`
/* Etc. */
有一般的「經驗法則」來決定哪些方法是這樣或那樣的情況更好?
「這是SELECT查詢」 - 我沒有看到查詢? –
我不能爲我的生活看到這個SELECT查詢 – Dale
所以你的意思是'重複1000次(SELECT; UPDATE;)'與'SELECT;重複1000次(UPDATE)'?並且沒有選擇查詢....... – luiges90