从2个表中选择时,Mysql查询速度非常慢

时间:2016-06-22 09:08:22

标签: php mysql performance

我正在尝试用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

1 个答案:

答案 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.klantIdb.bestelId编入索引。