簡體   English   中英

從2個表中選擇時MySQL查詢非常慢

[英]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.klantIdb.bestelId兩列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM