[英]Mysql query very slow when selecting from 2 tables
我試圖用MySQL執行一個非常簡單的查詢。 我想要實現的是在1個查詢中從2個不同的表中選擇一些數據。 但是,如果我僅從1個表中選擇數據,則查詢運行很快,但是當我將其切換為從兩個表中選擇數據時,查詢將變得非常慢。
我要實現的查詢如下所示:
SELECT k.klantId, b.bestelId
FROM klanten k, bestellingen b
WHERE k.klantId=b.klantId AND voornaam LIKE '%henk%'
上面的查詢大約需要20秒才能運行。
但是當我像這樣執行查詢時,查詢僅需不到一秒鍾的時間即可運行:
SELECT k.klantId
FROM klanten k, bestellingen b
WHERE k.klantId=b.klantId AND voornaam LIKE '%henk%'
我還嘗試從表“ bestellingen”中選擇其他列,但這也很慢。
有誰知道選擇一個額外的字段怎么可能這么慢?
---------------------編輯---------------------
我在場,但現在我在表上花了更多的列來選擇。 現在又需要18秒,但是也許我在擴展查詢中做錯了。 有人看到這有什么問題嗎?
SELECT filiaalId, bestelId, k.klantId, totaalPrijs, b.statusId, b.tmInvoer, geprint, verzendwijze, betaalwijze, afhaalpuntId, verzendkosten, betaalwijzeKosten
FROM klanten k LEFT JOIN bestellingen b ON (k.klantId=b.klantId)
WHERE (k.voornaam LIKE '%henk%' OR k.achternaam LIKE '%henk%' OR b.bestelId LIKE '%henk%')
ORDER BY b.tmInvoer DESC
嘗試使用mysql join,這應該更快。
SELECT k.klantId, b.bestelId
FROM klanten k LEFT JOIN bestellingen b ON (k.klantId=b.klantId)
WHERE voornaam LIKE '%henk%'
您還可以確保索引了k.klantId
和b.bestelId
兩列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.