性能 – 插入记录时的MySQL默认排序顺序

mysql中记录的默认排序ID是ASC(即我插入的行从表中下载)但我们将仅使用表中的最新信息(即下面的行).

如果我们将默认排序更改为DESC(即新记录到表的顶部),将会有任何性能改进,并且将从表的顶部查询频繁的信息.

解决方法:

我认为情况正好相反.

我的评论基于我如何理解在SQL Server中工作的索引 – 如果我有机会阅读更多关于它们如何在MySQL中工作的话,我会尝试稍后修改.

以与索引排序相同的顺序插入行可能会有轻微的性能优势,而不是以相反的顺序插入它们.

如果以相同的顺序插入,并且要插入的下一行总是比现有行的排序顺序更大,那么您将总是在行数据的最后一页中找到下一个可用的空位(当存在时).

如果你做相反的事情,总是让你的下一个插入行按排序顺序比现有行更小,那么你可能总是在行数据的第一页中发生冲突,引擎会做更多的工作来改变行的位置如果页面有空间.

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

2)如果select语句中的order by基于与索引完全相同的列标准,那么数据库服务器应该对索引顺序执行相同的操作,或者与索引顺序相反.这非常简单,除非您有一个多列索引,其中包含针对不同列的混合ASC-DESC声明.通过等于索引顺序和顺序等于反向索引顺序,您可以通过使用DESC和ASC替换索引声明中的ASC和DESC声明(显式和隐式)来确定反向索引顺序. order by子句.

上一篇:MySQL索引创建


下一篇:php – 搜索大量数据库时的速度