MySQL从上到下获取结果

时间:2013-12-19 02:00:51

标签: php mysql

我有一个MySQL的查询,我想在其中从底部到顶部获取结果。我考虑过ORDER BY,但我正在寻找更快/更高效的东西。我只是想知道是否有内置的东西使搜索从底部(即最近的)到顶部(最旧的)。

我的数据库很大,所以我认为ORDER BY可能很慢。提前谢谢!

2 个答案:

答案 0 :(得分:1)

我建议使用ORDER BY column_name DESC子句比从它的php程序中排序更快。

答案 1 :(得分:0)

对数据库中的数据进行排序几乎肯定会更有效。数据库旨在处理大量数据。并且数据库可以使用各种中间层无法使用的优化。如果您计划在中间层编写一个超高效的排序例程,该例程利用您拥有的数据库中没有的数据(即将数据输出到数十个中间层计算机的集群中,以便sort永远不会溢出到磁盘,利用你的数据主要被命令选择通常不会特别有效的算法这一事实,你可能会超过数据库的排序速度。但这种情况往往很少见。

例如,根据查询,数据库优化器可以选择按顺序返回数据而不执行排序的查询计划。例如,数据库知道索引中的数据已排序,因此它可以选择执行索引扫描以按顺序返回数据,而无需实现和排序整个结果集。如果它必须具体化整个结果,它只需要你要排序的列和某种行标识符(即Oracle中的ROWID)而不是像一个天真的中间层实现那样排序整行数据可能会。例如,如果您在(col1,col2)上有一个复合索引,并且您决定对UPPER(col2),LOWER(col1)进行排序,则数据库可以读取col1&索引中的col2值,对行标识符进行排序,然后从表中获取数据。当然,数据库不必这样做 - 优化器将考虑对从表或从各种索引获取数据的成本进行排序的成本。数据库很可能得出结论,最有效的方法是进行表扫描,将整行读入内存并对其进行排序。可以得出结论,利用索引可以获得更多I / O来获取数据,但可以通过减少或消除排序成本来弥补这一点。