为啥查询需要更多时间来执行。

Posted

技术标签:

【中文标题】为啥查询需要更多时间来执行。【英文标题】:Why query taking more time to execute.为什么查询需要更多时间来执行。 【发布时间】:2017-03-24 10:32:04 【问题描述】:

当我执行删除查询时,执行需要更多时间。 我正在从 csv 文件中读取参数,并使用参数从数据库中删除数据。 我的删除查询是,

delete_query = 'delete from app_outage_dfr_correlation_report_exclusions where start_time= %s AND stop_time= %s AND gil_site_id = %s AND total_time_in_mins = %s;'
args = (start_time,stop_time,gil_site_id,total_time_in_mins,)
cursor.execute(delete_query,args)

当我签入 cProfile 时,它​​显示以下结果。

1/8    0.000    0.000    0.000    0.000 method 'join' of 'str' objects
       46    0.000    0.000    0.000    0.000 method 'lower' of 'str' objects
        1    0.000    0.000    0.000    0.000 method 'lstrip' of 'str' objects
       13    0.000    0.000    0.000    0.000 method 'match' of '_sre.SRE_Pattern' objects
        4    0.000    0.000    0.000    0.000 method 'pop' of 'dict' objects
        1   11.135   11.135   11.135   11.135 method 'query' of '_mysql.connection' objects
        1    0.000    0.000    0.000    0.000 method 'release' of 'thread.lock' objects
       27    0.000    0.000    0.000    0.000 method 'remove' of 'list' objects
        9    0.000    0.000    0.000    0.000 method 'remove' of 'set' objects
       66    0.000    0.000    0.000    0.000 method 'replace' of 'str' objects
        3    0.000    0.000    0.000    0.000 method 'setter' of 'property' objects

谁能告诉我为什么执行需要更多时间。谢谢。

【问题讨论】:

【参考方案1】:

尝试使用 EXPLAIN SQL 语句检查您的查询,可能您的表确实很大,并且查询需要很长时间才能执行。

【讨论】:

在我的表中有 4Lacs+ 记录可用。 @Oleg Butuzov 因此(对于包括我在内的所有非印度人)您的表中有超过 400000 条记录。而你运行 delete 需要 11 秒,这已经是很多了。我建议优化你的表和 sql。 python中没有问题,数据结构和sql语句中的问题。在查询时对它进行成像检查每一行 - 这显然很慢..

以上是关于为啥查询需要更多时间来执行。的主要内容,如果未能解决你的问题,请参考以下文章

pl sql查询需要更多时间来执行

查询执行需要更多时间

为啥第一次播放 SoundEffectInstance 需要更多时间?

在 oracle 中,具有多个连接的查询执行需要更多时间

为啥 Node.js 中的某些 TCP 套接字比大多数其他套接字需要更多的时间来连接?

使用 distinct 和 top 子句执行查询需要更多时间