【发布时间】:2019-12-20 18:28:44
【问题描述】:
假设我们有一个非常大表,并且我们有以下形式的查询(这只是一个示例)
SELECT personID FROM people WHERE birthYear>2010 LIMIT 50
我想最大化获取该查询结果的性能,问题是数据库将解析整个表以找到匹配条件的元组,然后返回前 50 个。如果我们有,那就是一个问题具有数百万或数十亿元组的数据库。
在 Java - JDBC 或 SQL 中有没有办法不解析整个表,而是逐步解析它并获取前 50 个匹配条件的行,或者解析前 1000 行并获取所有匹配的行,并在用户单击“显示更多”按钮时继续获取更多结果?
感谢您的宝贵时间。
【问题讨论】:
-
您在birthYear 列上有索引吗?您限制 50 条记录,但按什么顺序?你总是需要一个带有 LIMIT 的 order by 子句,否则 mysql 会随机返回 50 条记录
-
查询只是一个例子。它不会总是 WHEREbirthYear 等。
标签: java mysql sql jdbc query-optimization