我正在尝试使用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
进行索引。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句