【发布时间】:2018-12-11 23:24:06
【问题描述】:
我有一个运行复杂连接的应用程序,它会在几秒钟内返回。没什么大不了。但是,当我在 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 秒??
【问题讨论】:
标签: mysql sql mysql-workbench