一个MySQL中排序优化问题

我们知道,MySQL里优化排序时候,可以把排序字段加到索引里(通常是复合索引)。

但如果有 order by col_a desc, col_b asc的时候,就会出现file sort。因为用上索引的排序是要同向的排序,一个正向一个逆向就不行了。

这时候可以弄个算法把col_a和col_b组合起来放到一个rank的字段中。

比如col_a是int,col_b也是int值(或是timestamp),这时候就可以让rank = col_a + (9999999999 – col_b),然后索引加到rank字段上。

这时候用rank排序就可以完成之前的效果了。这也是个空间换时间的策略。

发表评论

电子邮件地址不会被公开。 必填项已用*标注