1
我剛剛從試驗機轉儲數據庫到本地機器上運行,下面我查詢:mSQL的解釋查詢不一樣的測試VS本地
SELECT advert_id,A.category_id,A.subcategory_id,subcategory,model_id,model,make,price,price2,gst,cndtn,currency,photo_id, SUM(S.visits) AS visits
FROM adverts A
LEFT JOIN subcategories SC ON A.subcategory_id = SC.subcategory_id
LEFT JOIN photos P ON P.sale_id = A.advert_id AND P.thumb=1 AND P.sale_type_id=1
LEFT JOIN (
SELECT
entity_id , visits
FROM
sitestats_ga
WHERE
entity_type_id=1 AND (date <= DATE_FORMAT(NOW(), "%Y%m%d") && date >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 10 DAY), "%Y%m%d"))
) S ON A.advert_id = S.entity_id
WHERE '2015-12-02 06:44:55' >= A.datetime_added AND '2015-12-02 06:44:55' < A.datetime_removed AND A.sold_currency = '' AND (A.subcategory_id = '500' OR A.category_id = '100')
GROUP BY A.advert_id
ORDER BY visits DESC, A.datetime_added DESC
LIMIT 0,12
不幸的是,結果時間爲TEST與地方的不同,來驗證此我嘗試在mysql中使用EXPLAIN
,它們也不同。
因此只要注意一下,我有數據庫的一個新的轉儲到我的地方,這意味着它們具有相同的索引並且在看到EXPLAIN結果後我已經驗證過它。
今天運氣好了,在PROD上運行查詢,結果和我的LOCAL一樣,我期待該測試應該與PROD相同,但我認爲DB有差異,所以現在我想修復測試環境。
如何在這個問題上挖掘更多?我需要做更多的事情?
'possible_keys'在兩個屏幕截圖上都是相同的 - 唯一不同的是實際選擇的'keys'。 MySQL根據您獲得的行數和數據表的當前基數自動選擇最佳密鑰。如兩個屏幕截圖所示,表格內容完全不同(1.1k行vs 122k行) –
@TobiasBaumeister但它們具有相同的索引設置。 –
是的,但在查詢優化期間也會考慮表的實際行計數 –