【发布时间】:2023-03-30 20:55:01
【问题描述】:
- 您好,我正在寻找从 SQL 中获取最新日期的最佳方法,而不是在 SQL 中使用 max(date)。
选择 max(CreatedDate) as createdDate, max(LastModifiedDate) as modifiedDate from user.order;
需要关于解决方案的建议。
感谢您的帮助,
【问题讨论】:
-
CREATE INDEX IX_LastModified ON user.order ( LastModifiedDate ); CREATE INDEX IX_Created ON user.order;dev.mysql.com/doc/refman/8.0/en/create-index.html -
那么理想的解决方案是使用
MAX()函数本身。您不想使用MAX()有什么特别的原因吗? -
@Salvino 表格很大,像 max 这样的聚合大约需要 7 秒才能返回结果
-
@Dai 为什么只使用单一索引,而不是复合索引。有什么原因吗?
-
@AdityaVyas 复合索引在这种情况下无济于事:复合索引仅在查询使用两列
( a, b )时才有用,而b中的数据依赖于a- 但是在这种情况下(a是CreatedDate和b是LastModifiedDate)这两列彼此无关,因此您需要两个单独的索引。