我试图一次从任何数据库读取 1000 条记录。我假设我们不知道列的名称和列的类型,所以我总是选择表中的第一个来执行 ORDER BY。使用 ORDER BY 选择表中的哪一个重要吗?我不太擅长数据库方面的东西,现在我正在学习。如果选择一个好的列可以加快查询执行返回结果集的速度,那么我应该寻找什么类型?
我的代码:
if (SQLServerDatabase) {
String query = "SELECT * FROM "+tablename+" ORDER BY "+columnnames.get(0)+" OFFSET "+offset+" ROWS FETCH NEXT "+size+" ROWS ONLY;";
rs = stmt.executeQuery(query);
} else if (MySQLDatabase) {
String query = "SELECT * FROM "+tablename+" LIMIT "+offset+", "+size+";";
rs = stmt.executeQuery(query);
}
注意:columnnames 是一个列表
最佳答案
我建议首先获取主键的名称,然后对其进行 ORDER BY。
这个答案应该为您指明正确的方向。 SQL Server: Get table primary key using sql query
但是,您需要注意,您所做的操作并不能保证您不会检索到重复的记录。例如,如果您根据任意顺序请求记录 1-1,000,同时将另一条记录插入表中,该记录将出现在前 1,000 条中,那么当您请求记录 1,001 - 2,000 时,您会发现记录 1,001 与记录 1,000 相同。
关于java - SQL ORDER BY 子句可以与数据源中的任何列一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39080546/