为什么MySQL Workbench执行查询的速度比我的应用程序慢得多?

时间:2018-12-11 23:24:07

标签: mysql sql mysql-workbench

我有一个运行复杂联接的应用程序,它在几秒钟内返回。没什么大不了的。但是,当我在 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秒?

1 个答案:

答案 0 :(得分:1)

我找到了答案:内置的Limit to 500 rows等似乎很难确定要执行的500个操作。当我打开它时,它运行很快。这是一个很大的数据集。