如果您拥有100,000,000,000条记录的数据库,并且您知道需要输入51,293,128,345,那么有什么比
快SELECT * FROM table WHERE entry="51293128345"
如果你确切知道你需要什么以及它是什么行,那么数据库是否仍然需要扫描所有先前的记录才能到达那个记录。
答案 0 :(得分:0)
简单回答:在具有大量记录的SQL数据库中获取单个记录的最快方法是在密集索引列上使用where条件 - where myindexedcolumn = 1234567
。
我收集你的列名entry
在这种情况下只是一个通用术语,但是如果entry
没有索引而且你需要查询的列,那么你有一些注意事项:
在entry
上添加一个索引(正如@therewillbesnacks所述,索引改进了选择,但代价是更新/插入的额外成本)。但是,如果entry
不是唯一且包含大量重复项,则db查询优化器可能仍会忽略它并扫描整个表。
如果可以查询索引列以及entry
- 例如
WHERE myindexedcolumn = 1234 AND entry = "51293128345"
另一个考虑因素是使用完全不同的数据库类型,其中条目是所需记录的直接路径,例如: Redis之类的东西(从未使用它,但我听说过好东西)。这不是一个建议,但如果您真的需要查询包含1000亿条记录的表格,您可能需要调查其他开箱即用的优化。