我在自动递增的int列上键入了一个用户表,该表看起来像这样:
CREATE TABLE `user_def` ( `user_id` int(11) NOT NULL AUTO_INCREMENT, `user_name` varchar(20) NOT NULL, `date_created` datetime NOT NULL, PRIMARY KEY (`user_id`), UNIQUE KEY `user_name_UNIQUE` (`user_name`), ) ENGINE=MyISAM
使用DESC索引(主键)而不是默认的ASC是否有任何实际的性能优势?
我的怀疑/推理如下:我假设更多的最近用户将变得更加活跃(即,更频繁地访问表),从而使索引更有效。
我的理解正确吗?
正如Kazimieras Aliulis在评论中指出的那样,MySQL 8.0中添加了对降序索引的支持:
MySQL支持降序索引:索引定义中的DESC不再被忽略,而是导致键值以降序存储。以前,索引可以以相反的顺序进行扫描,但会降低性能。降序索引可以按向前顺序进行扫描,这样效率更高。当最有效的扫描顺序将某些列的升序与其他列的降序混合时,降序索引还使优化程序可以使用多列索引。
DESC索引目前尚未在MySQL中实现…引擎忽略了所提供的排序,并始终使用ASC:
DESC
ASC
index_col_name规范可以以ASC或DESC结尾。这些关键字允许将来用于指定升序或降序索引值存储的扩展。目前,它们已被解析但被忽略;索引值始终按升序存储。
对于其他实现了此功能的RBDMS(例如SQL Server),该DESC规范仅在按复合索引进行排序时才有用……并且不会对新创建的用户和较旧的用户的查找时间产生影响。