• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MariaDB创建降序索引

MySql 海叔叔 2小时前 3次浏览 已收录 0个评论

自从诞生以来,MariaDb(MySQL)索引有一个限制:它们不能降序(create index desc)。是的,ALTER TABLE和CREATE INDEX可以包含ASC和DESC关键字,这在MySQL中完全合法,但这并不意味着下降索引被创建。也就是Mysql支持索引desc这样的语法,但是实际上并不支持这样的功能,比如:order by column _name desc并不能使用索引。这是一个众所周知的MySQL功能:当它不能做某事时,它只是假装。嗯…有人认为这是一个功能,但我认为这是一个BUG(一个错误是一个意想不到的行为),那我们能做什么呢?

mariadb

缺少对降序索引的支持只是一个问题,当我们需要创建一个索引,其中至少有一列升序,并且至少有一列是降序。例如,MySQL假装理解以下语句,但是生成的索引不太可能有助于我们:

MariaDB有一个功能,为缺少降序索引提供了一个很好的解决方法:PERSISTENT列。如果您不了解它们,请先查看MariaDB KnowledgeBase。

PERSISTENT列如何帮助我们创建混合order索引?如果你还没有猜到,我会告诉你的。假设我们有一列A,我们希望它成为ASC + DESC索引的一部分。我们需要创建一个PERSISTENT列rev_A,其值是根据A中的值计算的。这里重要的是rev_A值的顺序与A是相反的。这是一个例子:

是的,这张表设计得很烂。你想说它不是好的关系表等等,但是我们在谈论在MariaDB中的混合order索引,而不是关系理论。

现在很清楚吗?但愿如此。我们来看一个示例查询。我们想列出学生:最近的考试,如果两个日期相同,按字母排序。

desc_exam_score索引表明:在索引中包含原始列并不是必须的:

-column_name显然是一个快速的获得真实值的操作。

示例表格显示了如何为数字,日期和ASCII 1字符串创建一个反向的索引部分。多字符ASCII字符串也很简单。我不知道如何创建一个反转的Unicode列。如果找到方法,请在文章下面留下评论。


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址