[英]How to construct a more complex mysql query for optimization
我有這個可愛的代碼片段,我想優化:
$result = mysql_query("select day from cities where name='St Charles'");
$row = mysql_fetch_assoc($result);
$day = $row['day'];
$result = mysql_query("select id,durability from goods_meta_data");
while($row = mysql_fetch_assoc($result)) {
mysql_query("delete from possessions where day_created<" . ($day-$row[durability]) . " and good_id=" . $row['id']);
}
如果占有已過期,它會從表'所有'中刪除行。 占有權是否已過期取決於表格“商品”和“城市”中的值。 具體來說,商品的年齡= day-day_created,如果商品的年齡超過其耐久性,那么它就會過期。 (每一種財產都是一種商品,每種商品都具有獨特的耐久性。)
這段代碼有效,但我覺得這可以在一個查詢中完成。 mysql服務器的延遲特別大,因此在較少的查詢中執行此操作將非常有益。
我怎么做? 有任何想法嗎?
另外,如果您能指出我可以學習如何以這種方式更好地利用關系數據庫的任何有用資源,那將會很有幫助。
假設您的第一個查詢返回單個結果,那么這應該工作:
DELETE p
FROM possessions p
INNER JOIN goods_meta_data gmd ON p.good_id = gmd.id
INNER JOIN cities c ON c.name = 'St Charles'
WHERE p.day_created < c.day - gmd.durability
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.