Hello MySQL AB,
I want to inform you about a strange behaviour I just had with the MySQL
server. Probably it's a bug, probably I've not read the docs good
enough. Here it goes:
Situation: My application splits huge queries into a bunch of smaller
ones using the "limit" clause. One can doubt whether this is good style
or not, but years earlier this was the only way to handle large
ResultSets (it's a Java app) and preformance is not that bad...
So, I have two tables, "person" and "persontoorg" which can be joined on
"person.nr=persontoorg.person". I perform a certain select which reads
like this:
select distinct
person.name,person.prename,person.street,person.streetnr,person.country,person.postalcode,person.city,person.belongs,person.telnr,
person.telnr2,person.faxnr,person.faxnr2,person.email,person.misc,persontoorg.nrinorg
from person,persontoorg where persontoorg.person=person.nr and
persontoorg.orgnr=1
When I do this, I get 4251 rows in the result.
Now, I split this query via the way mentioned above. So, my first query is
---
select distinct
person.name,person.prename,person.street,person.streetnr,person.country,person.postalcode,person.city,person.belongs,person.telnr,
person.telnr2,person.faxnr,person.faxnr2,person.email,person.misc,persontoorg.nrinorg
from person,persontoorg where persontoorg.person=person.nr and
persontoorg.orgnr=1
limit 16
---
then I query
---
select distinct
person.name,person.prename,person.street,person.streetnr,person.country,person.postalcode,person.city,person.belongs,person.telnr,
person.telnr2,person.faxnr,person.faxnr2,person.email,person.misc,persontoorg.nrinorg
from person,persontoorg where persontoorg.person=person.nr and
persontoorg.orgnr=1
limit 16,15
---
next is
---
select distinct
person.name,person.prename,person.street,person.streetnr,person.country,person.postalcode,person.city,person.belongs,person.telnr,
person.telnr2,person.faxnr,person.faxnr2,person.email,person.misc,persontoorg.nrinorg
from person,persontoorg where persontoorg.person=person.nr and
persontoorg.orgnr=1
limit 31.15
---
and so on. As I expect, the chunks' contents are equal to the result of
the one, large query without "limit". With one exception: The very last
query
---
select distinct
person.name,person.prename,person.street,person.streetnr,person.country,person.postalcode,person.city,person.belongs,person.telnr,
person.telnr2,person.faxnr,person.faxnr2,person.email,person.misc,persontoorg.nrinorg
from person,persontoorg where persontoorg.person=person.nr and
persontoorg.orgnr=1
limit 4246,15
---
delivers _not_ the last five entries I expect, but five different
entries of the table which have already been delivered earlier. So, I
get some doubles, but the last entries are missing. Took me about three
hours to find this odd behaviour...
When I do "...limit 4246,X" in the clause, X in (1,2,3,4) gives the
"correct" entries from the end of the table while X>=5 just jumps in its
middle again.
Workaround: Rewrite the query using some "order" clause. While this is
shuffling all entries compared to before, it seems to guarantee that all
entries are processed and transmitted.
Now my question: Bug or feature? Server is 3.23.48, SuSE 8.0.
Best regards,
Dirk
--
--- Dirk Hillbrecht
----- chitec OHG, Vahrenwalder Str. 7/TCH, 30165 Hannover
----- Tel.: +49/511/9357-840, Fax: +49/511/9357-849
----- eMail: [EMAIL PROTECTED], Web: http://www.chitec.de
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
- Newbie help needed with mysql Dirk Hillbrecht
- Newbie help needed with mysql john
- Re: Newbie help needed with mysql John Coder
- Re: Newbie help needed with mysql john
- Newbie help needed with mysql : part... john
- Re: Newbie help needed with mys... John Coder
- re: Newbie help needed with mys... Victoria Reznichenko
- Re: Bug with "limit" clause Steve Edberg