mysql查询视图数据慢_MySQL - 视图 - 超慢查询
这是一个奇怪的。我试图在MySQL中使用视图(我对MySQL有相当的新意,并且有更多的Sybase和SQL Server的经验)。任何方式这个新项目我们使用MySQL,因为它似乎有良好的性能。然而,为了更简单地查询网络前端,我们决定创建一些视图,一切运行良好,但它们需要永远运行。MySQL - 视图 - 超慢查询 意见非常简单,只需选择语句(这些表确实有几百万行)。例如说这个查询: SELECT CAST(classifier_results.msgDate as DATE) AS mdate ,classifier_results.objClass AS objClass ,COUNT(classifier_results.objClass) AS obj ,classifier_results.subjClass AS subjClass ,COUNT(classifier_results.subjClass) AS subj FROM classifier_results WHERE (classifier_results.msgDate >= (curdate() - 20)) GROUP BY CAST(classifier_results.msgDate as DATE) ,classifier_results.objClass ,classifier_results.subjClass ORDER BY classifier_results.msgDate DESC 当作为一个正常选择运行需要大约1.5秒返回结果。 然而,当这个查询放入视图(原样) - 即 CREATE VIEW V1a_sentiment_AI_current AS SELECT CAST(classifier_results.msgDate as DATE) AS mdate ,classifier_results.objClass AS objClass ,COUNT(classifier_results.objClass) AS obj ,classifier_results.subjClass AS subjClass ,COUNT(classifier_results.subjClass) AS subj FROM classifier_results WHERE (classifier_results.msgDate >= (curdate() - 20)) GROUP BY CAST(classifier_results.msgDate as DATE) ,classifier_results.objClass ,classifier_results.subjClass ORDER BY classifier_results.msgDate DESC 查询需要大约10倍的时间(22-30秒)。所以我想也许有一些优化或查询缓存,不适用于视图或可能有一些我们已经错过了在MySQL配置设置。但是有什么办法可以加速这个视图,所以它只是这个查询的一个很好的占位符? 运行EXPLAIN在两个查询: 正常的选择给出了: 1,操作简便,classifier_results,ALL,idx_date,,,,594845,使用其中;使用临时;使用文件排序 的视图中选择给出: 1,PRIMARY,ALL,,,,,100, 2,衍生classifier_results,ALL,idx_date,,,,594845,使用哪里;使用临时;使用文件排序 +0 如果在查看和从视图中选择时使用EXPLAIN,你会得到不同的结果吗? – +0 已添加到问题中。查询计划看起来是一样的,即时假设eprimary只是从视图返回mssql 使用视图,因为它是嵌套在某种意义上,没有什么可以指示20秒+额外运行.... – +1 我认为'DERIVED'意味着它正在使用一个临时表,这是杀害性能 – (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |