gpt4 book ai didi

php - 从 2 个表中选择时,Mysql 查询非常慢

转载 作者:行者123 更新时间:2023-11-29 01:27:09 26 4
gpt4 key购买 nike

我正在尝试使用 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 连接,这应该会更快。

SELECT k.klantId, b.bestelId
FROM klanten k LEFT JOIN bestellingen b ON (k.klantId=b.klantId)
WHERE voornaam LIKE '%henk%'

您还可以确保对两列 k.klantIdb.bestelId 进行了索引。

关于php - 从 2 个表中选择时,Mysql 查询非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37963423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com