时间字段,int类型(内容时间戳)
这个字段内容不是唯一,但是大多查询都会对这个字段做 order by 该字段 desc排序查询
请问这样的字段如何加索引?谢谢!!!
时间字段,int类型(内容时间戳)
这个字段内容不是唯一,但是大多查询都会对这个字段做 order by 该字段 desc排序查询
请问这样的字段如何加索引?谢谢!!!
谢谢邀请。
之前写过一篇索引的文章介绍过你说的这种情况:
mysql一张表查询只能用到一个索引。因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作,尽量不要包含多个列的排序,如果需要最好给这些列建复合索引。这一点是很多程序猿容易忽略的,如where子句的字段建了索引,排序的字段建了索引,但是分开建的,以为会走索引,其实这样的话排序的字段不会使用索引的,除非建复合索引,切记。
如果这个时间字段只是用来order by,基本按上面的套路来就可以了,记得用Explain来分析性能是否有提升。
如果这个时间字段还有做范围的查询,则需要额外考虑下面的规则:
组合索引时切记此条约束:组合索引中有多个字段,其中一个字段是有范围判断,则需将此字段在最后面。
希望回答对你能有所帮助。
:)
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.2k 阅读✓ 已解决
2 回答2k 阅读
3 回答2k 阅读
索引主要看where和order by 后面的条件,如果仅是按时间排序,直接加一个时间字段的索引就好,如果还有其它条件,可以建联合索引。
如
或
一定要通过
EXPLAIN
反复比较加不加索引的效果。