我有一個表hall_products與產品。每個產品都有一個NAME,以指定的QUANTITY出售,並僅出售給CITY_CODE指定的一個城市。 現在下一張表是delivery_address。每個送貨地址都是一個城市,它包含一個CITY_CODE和MAX_QUANTITY,這是可以發送到該城市的產品的最大數量(不管是什麼產品)。嵌套查詢在MySQL中非常慢。如何優化它?
因此,例如,我有一個產品牛奶的數量1升,並用代碼14表示柏林市代碼。 我可以送到柏林(城市代碼14)的最大數量是0,7升。比我把牛奶運到柏林是因爲數量高於最大量。
我想要得到的是所有可以運往世界任何地方的商品的名稱。所以我需要獲得所有符合目標城市max_quantity限制的商品。
我寫此查詢此:
SELECT p.NAME FROM hall_products as p where p.QUANTITY >
(SELECT MAX_QUANTITY from delivery_address WHERE CITY_CODE = p.CITY_CODE)
但這種查詢是SOOO緩慢。
如何在不改變數據庫模式的情況下更快地更改查詢?
你可以添加解釋的輸出。 – Zimbabao 2011-03-03 11:33:58
這是您實際使用的查詢嗎?這對我來說似乎是一個奇怪的查詢..嵌套查詢中的雙'from'和'*'看起來好像不能很好地工作...... – gnur 2011-03-03 11:35:26
查詢將不會運行。在使用'>'操作符時,不允許在子選擇中返回多個列(實際上,我認爲MySQL中不可能返回MySQL中的多個列中的多個列) – 2011-03-03 11:40:00