是否有更快的方法来查询特定条目的数据库而不是ID?

时间:2014-03-23 21:44:07

标签: mysql sql database

如果您拥有100,000,000,000条记录的数据库,并且您知道需要输入51,293,128,345,那么有什么比

SELECT * FROM table WHERE entry="51293128345"

如果你确切知道你需要什么以及它是什么行,那么数据库是否仍然需要扫描所有先前的记录才能到达那个记录。

1 个答案:

答案 0 :(得分:0)

简单回答:在具有大量记录的SQL数据库中获取单个记录的最快方法是在密集索引列上使用where条件 - where myindexedcolumn = 1234567


我收集你的列名entry在这种情况下只是一个通用术语,但是如果entry没有索引而且你需要查询的列,那么你有一些注意事项:

  1. entry上添加一个索引(正如@therewillbesnacks所述,索引改进了选择,但代价是更新/插入的额外成本)。但是,如果entry不是唯一且包含大量重复项,则db查询优化器可能仍会忽略它并扫描整个表。

  2. 如果可以查询索引列以及entry - 例如

    WHERE myindexedcolumn = 1234 AND entry = "51293128345"

  3. 另一个考虑因素是使用完全不同的数据库类型,其中条目是所需记录的直接路径,例如: Redis之类的东西(从未使用它,但我听说过好东西)。这不是一个建议,但如果您真的需要查询包含1000亿条记录的表格,您可能需要调查其他开箱即用的优化。