Mysql 可以在索引上创建索引吗?

Mysql 可以在索引上创建索引吗?,mysql,database,oracle,indexing,Mysql,Database,Oracle,Indexing,这是一个多部分索引问题: 有没有办法创建索引 在索引上 为何要这样做呢 如果有的话,有什么例子吗 否,索引用于表中的列 索引用于查找具有 快速指定特定的列值。 如果没有索引,MySQL必须开始 用第一行,然后读 通过整个表格找到 相关行。桌子越大, 成本越高。如果桌子上有 有关列的索引, MySQL可以快速确定 在中间寻求位置 无需查看数据文件 在所有的数据中。如果一张桌子有1000个 行,这至少是100次 比按顺序阅读快 从oracle文档中的语法图可以看出,它不适用于索引。 我也想不出你想

这是一个多部分索引问题:

  • 有没有办法创建索引 在索引上
  • 为何要这样做呢
  • 如果有的话,有什么例子吗

  • ,索引用于表中的

    索引用于查找具有 快速指定特定的列值。 如果没有索引,MySQL必须开始 用第一行,然后读 通过整个表格找到 相关行。桌子越大, 成本越高。如果桌子上有 有关列的索引, MySQL可以快速确定 在中间寻求位置 无需查看数据文件 在所有的数据中。如果一张桌子有1000个 行,这至少是100次 比按顺序阅读快


    从oracle文档中的语法图可以看出,它不适用于索引。

    我也想不出你想这样做的原因。

    一个索引已经被排序,所以你可能真的不想创建一个这样的索引。但是,如果进行低级编程,您可能希望将索引的子集(例如每1024条或每2048条记录)存储在内存或较小的磁盘区域中,这样您就可以首先查看并搜索较大索引中记录所在的位置

    “平方根”规则在这里很有效。因此,如果表中有400万个条目,即2048*2048(大约)。您“加载”2048条记录,然后找到需要加载的主索引的哪个2048记录部分以查找记录,因此您总共只加载2个块,而不必通过2048个块进行二进制搜索


    这可能是一个巨大的优化,但它适用于低级程序员,即数据库工具的开发人员,而不是用户。

    两条建议:1。让你的问题更清楚2:接受你问题的答案我必须与[@Philippe Leybaert]协商,我发现当你表现出关心X-,你有更有效的意见。还有一点很有意思,您能解释一下为什么要尝试这个方法吗?我如何决定何时创建索引或删除索引是合适的?我必须经常从8列的表中访问两列。(假设有些情况下,比如table有1000行、10000行、100万行、200-300万行、500万行)。制作索引总是好的吗?创建索引会变成一个坏主意吗?索引应该在性能糟糕时使用,而不是作为10-1000表的规则。如果您发现查询速度慢,请查看索引。我从未见过有10行的表性能不好,但是加入一个更大的表(10000000)可能会给您带来问题。所以正如那句老话所说,如果它没有坏,就不要修理它