gpt4 book ai didi

java - 使用 order by 和 limit by 子句优化 mysql 查询

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

我有一张表,其中包含成员的审核信息。

我有一个查询,例如:

select columnsname from tablename 
where member id =?
order by audit_date desc, audit_time desc
limit 0,150

此查询需要很长时间才能执行。我正在查询的表包含大约 2 到 30 亿条记录。

我无法删除 order by 子句,因为我想要按审核日期和审核时间的降序排列记录。我也无法删除 limit by 子句,因为我需要分页功能。

我已经在成员(member) ID、audit_date 和audit_time 上应用了索引。

任何人都可以帮助我优化此查询或建议我可以在 Java 层应用的任何其他方法来实现此功能吗?

下面是我的解释输出。左侧是列名,右侧是其值。

┌───────────────┬──────────────────────────────────┐
│ Column Name │ Column Value │
├───────────────┼──────────────────────────────────┤
│ ID │ 1 │
│ Select Type │ simple │
│ table │ member_audit_info │
│ type │ ref │
│ possible_keys │ member_audit_info_memebrid_index │
│ key │ member_audit_info_memebrid_index │
│ ref │ const │
│ rows │ 208988 │
│ extra │ Using where,Using filesort │
└───────────────┴──────────────────────────────────┘

最佳答案

使用包含日期和时间部分的单列TIMESTAMPDATETIME,并基于该单列进行排序,这可能会提高性能查询的内容。

示例查询:

select columnsname from tablename 
where member_id =?
order by audit_timestamp desc
limit 0,150

注意:(关于查询性能的更多要点)

  • 成员 ID 应编入索引。
  • 仅获取必需的列
  • 减少限制(分页大小)

关于java - 使用 order by 和 limit by 子句优化 mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24572836/

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