【问题标题】:Is it possble to create an index on index? [closed]是否可以在索引上创建索引? [关闭]
【发布时间】:2011-02-11 16:40:45
【问题描述】:

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

  1. 有没有一种方法可以创建索引 在索引上?
  2. 为什么要这样做?
  3. 如果有,有什么例子吗?

【问题讨论】:

  • 两条建议:1. 让您的问题更清晰,2:接受您的问题的答案
  • 我必须同意 [@Philippe Leybaert],我发现当你表明你关心 X-) 时,你有更有效的输入。另外,出于兴趣,您能否解释一下为什么您想尝试这个?

标签: mysql database oracle indexing


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    您可以从 oracle 文档中create index 的语法图中看到它不适用于索引。
    我也想不出你想要的理由。

    【讨论】:

      【解决方案3】:

      ,索引适用于表格中的列

      How MySQL Uses Indexes

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

      【讨论】:

      • 我如何决定何时适合创建索引或删除索引?我必须经常从有 8 列的表中访问两列。 (比如有些情况,比如表有 1000 行、10000 行、100 万、2-3 百万、500 万)。制作索引总是好的吗?创建索引是否会变成一个坏主意?
      • 当性能很糟糕时应该使用索引,而不是作为 10-1000 表的规则。如果您发现查询很慢,请查看索引。我从未见过有 10 行的表表现不佳,但加入更大的表 (10,000,000) 表可能会给您带来问题。所以就像那句老话,如果没有坏就不要修复它
      猜你喜欢
      • 2015-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多