我有一个运行复杂连接的应用程序,它会在几秒钟内返回。没什么大不了。但是,当我在 Workbench 8.0.12 中运行相同的查询时,需要一分钟多的时间。连接字符串是相同的。
This post没有帮助,似乎是一个不同的问题。
我的应用程序是使用 MySQL.Data dll 的 .NET。我过去曾多次使用 Workbench,但通常与 PHP 应用程序一起使用。根据多年的经验,我总是看到 Workbench 运行查询的时间与应用程序运行查询的时间大致相同。
这是我的查询:
SELECT
model.Code as ModelCode,
prod.parts_group as PartsGroup,
rules.id AS ID,
rules.Code as ConstraintName,
REPLACE(REPLACE(REPLACE(REPLACE(rules.statement, '''', ''), ' me.', ''), '}and ', '} and '), '}or ', '} or ') as Statement,
ifnull(rules.priority,5) AS Priority,
model.serie_id AS SeriesID
FROM
toy_product_constraint as rules
INNER JOIN toy_product as prod ON rules.product_id = prod.id
INNER JOIN toy_product_model as model ON prod.model_id = model.id
JOIN ModelImport mi ON model.code = mi.ModelCode
WHERE
rules.statement <> 'TRUE'
AND rules.market_id is null
AND rules.statement not like 'hasSDR(true)%'
AND rules.statement like 'SPECOPTION{00%'
最后 3 个 where 子句似乎增加了 99% 的额外查询时间:
AND rules.market_id is null
AND rules.statement not like 'hasSDR(true)%'
AND rules.statement like 'SPECOPTION{00%'
如果没有最后 3 个,查询在 Workbench 中的运行时间为 1 秒。 对于最后 3 个,在 Workbench 中需要 60 秒以上。我们可以讨论索引和其他事情,但真正的谜团是为什么这个相同的查询在我的应用程序中运行(并返回记录)不到 3 秒(我已经逐行浏览了代码并验证了这一点)并且在工作台中超过 60 秒?
最佳答案
我找到了答案:内置的限制为 500 行
等,似乎很难弄清楚要执行哪 500 行。当我把它打开时,它跑得很快。这是一个很大的数据集。
关于mysql - 为什么 MySQL Workbench 执行查询的速度比我的应用程序慢得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53733873/