java - SQL ORDER BY 子句可以与数据源中的任何列一起使用吗?

标签 java mysql sql

我试图一次从任何数据库读取 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/

相关文章:

mysql - 选择当前用户同一公司的所有用户

Mysql 获取最新的item数量

mysql - 共同好友sql与join(Mysql)

MySQL:如何选择和处理 "n to n"相关数据以提高性能

Java 启动画面比例因子

java - Java中如何播放声音文件

java.lang.ClassNotFoundException : com. mysql.jdbc.Driver Vertrigo 服务器 eclipse

mysql - 数据库为 2 个相似的表创建表

java - Bitbucket Api 以 ssh 访问 key 作为 header ,用于获取 java 中拉取请求的总数

java - 字符串中单词的大写