请教各位大佬一个 SQL 查询的问题

11次阅读

共计 840 个字符,预计需要花费 3 分钟才能阅读完成。

有个 sql 要求按照开始时间倒序,并且 contactId 相同的情况要放在一起(相同的也按时间倒序)。这个 sql 在数据量大了之后运行 10 多秒(八万条左右),接口就超时了。尝试加索引,速度还是很慢。有啥办法能优化吗。改 sql 的话也暂时没想到其他方法能实现这功能。。
select
DISTINCT
xml.started,
xml.start_time startTime,
xml.ani,
xml.core_dnis coreDnis,
xml.core_extension coreExtension,
xml.poor,
xml.contactId,
xml.core_agentid coreAgentid,
xml.core_agentname coreAgentname,
xml.filename,
xml.end_time endTime,
xml.core_callid coreCallid,
wav.tran_failed tranFailed,
wav.sentiment_flag sentimentFlag
from
iqc_xml xml
left join iqc_wav wav on xml.filename = wav.filename
where ## 字段条件筛选 ##
ORDER BY
MAX(xml.start_time) OVER (PARTITION BY xml.contactId) DESC,
xml.contactId, xml.start_time DESC

EXPLAIN:
|id|select_type|table|partitions|type|possible_keys|key|key_len|ref|rows|filtered|Extra|

|1|SIMPLE|xml||ALL|||||134595|100.0|Using temporary; Using filesort|
|1|SIMPLE|wav||ref|idx_filename|idx_filename|1023|xml.filename|1|100.0||

正文完
 0