Discussions
Categories
- 196.7K All Categories
- 2.2K Data
- 234 Big Data Appliance
- 1.9K Data Science
- 449.8K Databases
- 221.5K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 549 MySQL Community Space
- 477 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3K ORDS, SODA & JSON in the Database
- 532 SQLcl
- 4K SQL Developer Data Modeler
- 186.8K SQL & PL/SQL
- 21.2K SQL Developer
- 295.3K Development
- 17 Developer Projects
- 138 Programming Languages
- 292K Development Tools
- 104 DevOps
- 3.1K QA/Testing
- 645.9K Java
- 27 Java Learning Subscription
- 37K Database Connectivity
- 153 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.1K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 17 Java Essentials
- 157 Java 8 Questions
- 85.9K Java Programming
- 79 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.2K Java SE
- 13.8K Java Security
- 203 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 389 LiveLabs
- 37 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.6K Other Languages
- 2.3K Chinese
- 170 Deutsche Oracle Community
- 1K Español
- 1.9K Japanese
- 230 Portuguese
setMaxRows vs Limit/rownum/top

The JDBC API doc for setmaxRows says that "If this limit is exceeded, the excess rows are "silently dropped".
Consider a Query fetching 1000 rows and i configured setMaxRows to 10 (i.e.) PreparedStatement.setMaxRows(10) .
Now the data from the database , present in packets travelling to my machine contains 10 rows or 1000 rows ?
Answers
-
JDBC is only an API, it doesn't "do" anything other than dictate the contract of its implementations. It depends on how the driver is built and thus on the people maintaining that driver how this particular demand is settled. Lets assume they're built to be efficient and so will not transfer unnecessary data over the line.
-
The JDBC API doc for setmaxRows says that "If this limit is exceeded, the excess rows are "silently dropped". Consider a Query fetching 1000 rows and i configured setMaxRows to 10 (i.e.) PreparedStatement.setMaxRows(10) . Now the data from the database , present in packets travelling to my machine contains 10 rows or 1000 rows ?
First - forget about 'packets' travelling to the machine. Packets are physical and the size and content is determined mostly by your machine settings. The actual number of rows in a packet would also depend on the size of each row.
The 'setMaxRows' value is used to stop fetching MORE results from the server. So AFTER fetching rows the setting will be checked and, if met, will prevent future fetches of data.
Depending on the fetch size set/used by your code you might have fetched ALL 1000 rows to the client with the first fetch.
What PROBLEM are you trying to solve?
If you want to control the number of rows fetched to the client you also need to set the fetch size. Even then that will NOT control what the server does.