2012-11-25 39 views
4
排序顺序

的在mysql中记录的默认排序ID是ASC(即我插入下山表即行),但我们将使用从表中只有最新的信息(即行即在下面)。性能 - MySQL的默认情况下插入记录

会有任何性能改进,如果我们改变默认的排序以降序(即新记录转到表的顶部)和频繁的信息会从桌子上查询。

回答

1

任何性能变化将在查询记录,而不是插入一个。

对于查询,我怀疑这会通过密钥数据库查询多大影响通常有类似的速度。

它也取决于您的数据,所以我会运行一些测试。

+0

是的..!现在我必须使用ORDER BY'field' DESC来查询所有的时间..如果我改变它插入的方式,我不必使用ORDER BY的权利...可能是一个性能提升...是的,我会做性能测试是肯定的..只是想知道是否有人看到了显着的性能变化 –

4

我认为这将是相反的。

我立足于我理解如何指标在SQL Server - 我工作的这条评论尝试,如果我有机会多读了他们在MySQL中是如何工作以后修改。

可能会有轻微的性能优势插入行以相同的顺序作为指标进行排序,与以相反的顺序将它们插入。

如果以相同的顺序插入,并且插入的下一行总是按照与现有行相同的顺序排列,那么您将始终在行数据的最后一页中找到下一个可用的空白点(当存在时)。

如果做相反的事情,总是让您的下一个插入行按照与现有行相比排序顺序较小,那么您可能总是在第一页行数据中发生冲突,并且引擎会稍微多做一些工作如果页面有空间,则为行的位置。

至于select语句中的order by子句: 1)SQL标准中没有关于索引的内容,也没有任何内容保证除ORDER BY子句之外的结果集排序。通常,SQL Server中只使用一个索引的查询将查看以索引顺序返回的结果。但是,如果隔离级别更改为“读取未提交”(混沌?),那么它将更可能按照它在内存或磁盘中的顺序返回行,这不一定是您想要的顺序。

2)如果通过在选择语句的顺序是基于完全相同的列的标准为指标,则数据库服务器应该执行与任一索引顺序,或者索引顺序相反的是相同的。除非可能有多列索引和不同列的混合ASC-DESC声明,否则这非常简单。您可以通过等于索引顺序以及顺序等于逆索引顺序来获得相同的性能,顺序等于逆索引顺序,其中逆索引顺序通过用索引声明中的DESC和ASC代替索引声明中的ASC和DESC声明(显式和隐式)来确定按条款排序。