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

标签 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 秒?

最佳答案

我找到了答案:内置的限制为 500 行等,似乎很难弄清楚要执行哪 500 行。当我把它打开时,它跑得很快。这是一个很大的数据集。

关于mysql - 为什么 MySQL Workbench 执行查询的速度比我的应用程序慢得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53733873/

相关文章:

mysql - 如何查找与全部或部分输入完全匹配的字符串

mysql:恢复在 mysqldump 中使用 "--tab"选项创建的备份

c# - 使 Entity Framework 重用一个值

java - 继承表的外键名称

mysql - 用于导出的 INTO OUTFILE 查询在本地驱动器上不起作用

mysql-workbench - 如何绘制列之间的关系线?

Java MySQL登录系统确定用户

mysql - 将 TSV 格式转换为可上传 MySQL 数据库?

php - 来自一个表的 SQL COUNT,其中另一表的条件为 true

mysql - 尽管存在主键,但表是只读的