我正在尝试用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
答案 0 :(得分:5)
尝试使用mysql连接,这应该更快。
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
编入索引。