【发布时间】:2014-07-07 22:47:17
【问题描述】:
我有一个包含成员审计信息的表。
我有一个类似的查询:
select columnsname from tablename
where member id =?
order by audit_date desc, audit_time desc
limit 0,150
此查询需要很长时间才能执行。我正在查询的表包含大约 2 到 30 亿条记录。
我无法删除 order by 子句,因为我希望记录按审计日期和审计时间的降序排列。由于我需要分页功能,所以我也无法删除限制子句。
我已经在成员 ID、审计日期和审计时间上应用了索引。
谁能帮助我优化此查询或建议我可以在 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 │
└───────────────┴──────────────────────────────────┘
【问题讨论】:
-
如果可以,请显示表结构。
-
请同时添加
explain select column_name from ...的输出 -
是的,我可以,但实际上我是 stackoverflow 的新手,所以我不知道如何以表格形式添加帖子。请问您也可以帮我吗?
-
编辑您的问题并添加您的输出,如代码。
-
您有关于 audit_date 和 audit_time 的索引吗?
标签: java mysql jsp pagination