gpt4 book ai didi

MySQL ORDER BY 杀死了我的 SQL 查询

转载 作者:行者123 更新时间:2023-11-30 23:36:30 25 4
gpt4 key购买 nike

我有多个表格,其中包含有关管视频的信息。我需要加入这三个表并获取所需的列,然后按最近的(unix timestamp)对它们进行排序。 video 列有 120 万条记录,video_data 有超过 800 万条记录,tube 只有 22 条记录。

这个查询在没有 ORDER BY 部分的情况下工作正常:

SELECT vd.video_id, vd.tube_id, v.*, t.tube_title, t.tube_domain FROM video_data vd JOIN video v ON vd.video_id = v.video_id JOIN tube t ON vd.tube_id = t.tube_id LIMIT 100

以上查询耗时 0.0002 秒

但是,一旦我想按时间戳排序,如果不先由服务器重置,则需要 4-5 分钟才能运行。

SELECT vd.video_id, vd.tube_id, v.*, t.tube_title, t.tube_domain FROM video_data vd JOIN video v ON vd.video_id = v.video_id JOIN tube t ON vd.tube_id = t.tube_id ORDER BY v.date_timestamp DESC LIMIT 100

以上查询耗时 272.9157 秒

我在 v.date_timestamp 字段中添加了一个索引以查看是否有帮助,但显然没有帮助。也许无论如何在该列上放置索引毫无意义?任何帮助都会很棒,我对 SQL 还是很陌生...

最佳答案

不是肯定的,但我认为问题可能是当您在 video.date_timestamp 上有一个索引时,您的查询必须先点击每个 video_data 条目才能加入视频。

您应该通过如下方式通过反规范化看到很大的加速:将 date_timestamp 字段复制到 video_data 表并对其进行索引/排序,而不是视频中的等效字段。

关于MySQL ORDER BY 杀死了我的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6934430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com