【问题标题】:SQLite Table Structure for Creating a 1:Many Index Relationship用于创建 1:Many 索引关系的 SQLite 表结构
【发布时间】:2017-05-04 14:49:38
【问题描述】:

问题 无法创建具有引用表中多行的索引列的表。下面是我正在尝试创建的图片示例。

概述 想象一下(SQLite)表将保存股票股息支付。索引列设置为股票代码。但是,每个股票代码都引用多个记录,这些记录由时间戳组织。 SQLite 的文档和大约 15 个其他教程似乎都专注于索引,索引和记录之间始终存在 1:1 的关系。我想创建一个具有 1:many 关系的索引。

查找将按代码找到合适的股票,然后(可能)在第一列中的日期上找到二级索引。但我找不到其他人试图建立这种结构的任何例子。让我觉得也许我没有正确的方法,或者这只是一个特例。

【问题讨论】:

    标签: sqlite indexing table-structure


    【解决方案1】:

    我不认为你的问题实际上是一个问题。在列上放置索引并不意味着它必须包含唯一值。索引列中的值重复是完全合理的。当然,收益递减。例如。如果您有一百万行并且在一列中只有五个不同的值,那么该列上的索引实际上并不会为您做很多事情。

    一个好的经验法则是从您在 where 子句中使用的列的索引开始。然后运行查询,看看您是否获得了令人满意的性能。

    【讨论】:

    • 感谢您的提示,迈克尔。我了解创建索引。但我不明白如何创建该索引来引用多行。您能否提供一个 SQLite 示例或一个参考?谢谢!
    • 您没有找到任何相关文档,因为这不是您必须做的事情。只需使用标准语法:在 table(column(s)) 上创建索引 index_name。 “引用多行”没有什么特别之处。它会起作用的!
    • 哦。哦。所以主键字段不需要是唯一的......所以该列中的每个字段都会有重复的键......这给了我我需要的搜索结果。谢谢,迈克尔。这正是我需要听到的。
    • 很高兴听到这解决了您的问题,但为了澄清,主键必须是唯一的。索引和主键有一些共同特点,但不是一回事。你可能想多读一点,否则你很可能会再次被类似的问题难住。希望有帮助!
    猜你喜欢
    • 1970-01-01
    • 2016-04-12
    • 2014-04-15
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    相关资源
    最近更新 更多