如果我们在也具有ORDER BY子句的查询中使用Limit子句并在JDBC中执行查询,那么性能会有什么影响吗?(使用MySQL数据库)
例:
SELECT modelName from Cars ORDER BY manuDate DESC Limit 1
Run Code Online (Sandbox Code Playgroud)
我在这个论坛的一个主题中读到,默认情况下,一次获取一个集合大小.如何找到默认的提取大小?
我只想要一条记录.最初,我使用如下:
SQL查询:
SELECT modelName from Cars ORDER BY manuDate DESC
Run Code Online (Sandbox Code Playgroud)
在JAVA代码中,我提取如下:
if(resultSett.next()){
//do something here.
}
Run Code Online (Sandbox Code Playgroud)
肯定LIMIT 1会对性能产生积极影响.而不是从DB服务器返回到Java代码的整个(好,取决于默认提取大小)数据集的数据集,将只返回一行.这节省了大量的网络带宽和Java内存使用量.
始终委托尽可能像可能的限制LIMIT,ORDER,WHERE,等SQL语言,而不是在Java方面这样做.DB会比你的Java代码做得更好(当然,如果表格被正确编入索引).你应该试着写SQL查询尽可能possibe它返回正是你所需要的信息.
编写特定于DB的SQL查询的唯一缺点是SQL语言在不同的DB服务器之间不可完全移植,这需要您在更改DB服务器时每次都更改SQL查询.但是,在现实世界中,切换到完全不同的DB make是非常罕见的.无论如何,将SQL字符串外部化为XML或属性文件应该会有很大帮助.
| 归档时间: |
|
| 查看次数: |
2135 次 |
| 最近记录: |