【问题标题】:MySQL create index sum of two columns data in one tableMySQL在一张表中创建两列数据的索引总和
【发布时间】:2018-04-29 12:04:06
【问题描述】:
>> 表1 -------------------------------------------------- ------------ |第 1 列 |第 2 列 |第 3 列 |第 4 列 |第 5 列 |第 6 栏 | +---------+---------+---------+---------+--------- +----------+ |数据1 |数据2 |数据3 |数据4 |数据5 |数据6 | +---------+---------+---------+---------+--------- +----------+ |数据7 |数据8 |数据9 |数据10 |数据11 |数据12 | +---------+---------+---------+---------+--------- +----------+ . . . +---------+---------+---------+---------+--------- +----------+ |数据 |数据 |数据 |数据 |数据 |数据 | -------------------------------------------------- ------------ >> 查询 选择 * 从表 1 哪里(第 5 列 + 第 6 列)>= 6;


如何在 MySQL 中为此查询创建索引?

【问题讨论】:

  • 索引可能对这个特定的查询没有帮助,因为您将两列加在一起。
  • 在 Postgresql 中它会是 CREATE INDEX sumthing ON table1 (( column5 + column6 )); 对于我不知道的 mysql。
  • 哦,我忘了,第5列和第6列的数据类型是int。
  • @Jasen thx,但是您的查询在 mysql 中不起作用。
  • 我不明白其他列的相关性

标签: mysql sql indexing


【解决方案1】:

较新版本的 MySQL (5.7.6)(以及 5.2 中带有 VIRTUAL 列的 MariaDB)具有“生成”列。您将创建例如 (col5+col6),然后索引这个假列。这样的列可以是表中的STORED,我们可以是VIRTUAL。阅读文档以获取详细信息。

col56 GENERATED ALWAYS AS (col5 + col6) VIRTUAL  -- or STORED

【讨论】:

  • 我不想创建新列。不过谢谢你告诉我新的方法。
【解决方案2】:

我不相信您可以在两列的总和上创建索引。

您可以添加一个包含 column5 + column6 和索引的附加字段。

您可以创建一个视图,其附加列等于 column5 + column6 并在其上建立索引。

【讨论】:

  • 嗨,John,我同意创建计算列,但我不确定是否可以在 MySQL 中为视图编制索引。
  • 是的,你是对的,没有关于视图的索引,很抱歉给你不好的建议。
  • @TimBiegeleisen 感谢您的建议。我想我应该更加努力学习。
  • @JohnBiddle 我不知道为什么我一次只能评论一个人。感谢您的友好回答。
猜你喜欢
  • 1970-01-01
  • 2020-03-24
  • 2011-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-25
  • 1970-01-01
相关资源
最近更新 更多