【发布时间】:2018-03-29 23:09:56
【问题描述】:
我正在使用 Postgresql (cockroachdb),我想选择一个特定的行。例如,有数千条记录,我想选择行号 999。
在这种情况下,我们将使用 LIMIT 和 OFFSET,SELECT * FROM table LIMIT 1 OFFSET 998;
但是,根据this post,使用 LIMIT 和 OFFSET 可能会导致性能问题。所以我想知道是否有办法在不进行全表扫描的情况下获取特定行。
我觉得这是可能的,因为数据库似乎按主键对数据进行排序,当我执行SELECT * FROM table; 时,它总是显示排序结果。由于是按主键排序的,所以数据库可以使用索引来访问特定的行,对吧?
【问题讨论】:
-
你也可以,指定
WHERE PrimaryKey = Value。但这并没有为数据库提供一种快速跳转到行的快速方法,如果我们按顺序对它们进行编号,将是第 999 行,尽管它已排序,但您无法在字典中快速找到第 999 个单词。 (无论如何,您都可以想出一些技巧来快速到达那里——这些技巧实际上确实会在一定程度上转化为数据库。)
标签: sql cockroachdb