Ik heb een probleem met een SQL query die een ander resultaat oplevert sinds een server upgrade.
Het gaat om MySQL met volgende versie:
Ik weet helaas niet meer wat de versie was voor de upgrade...
Deze (sterk versimpelde) query werkt als verwacht:
Dit levert 30 resultaten op, zonder de LIMIT waren dit er 10.176 geweest.
Nu gaat er fout als de volgende query wordt uitgevoerd waarbij 'SQL_CALC_FOUND_ROWS' is toegevoegd:
Dit levert 1 resultaat op.
(En soms ook nog een andere rij)
Dit wordt ook bevestigd met:
Paar dingen die ik heb geconcludeerd:
Iemand?
Het gaat om MySQL met volgende versie:
root@db1:~# mysql --version mysql Ver 14.14 Distrib 5.1.41, for debian-linux-gnu (x86_64) using readline 6.1
Ik weet helaas niet meer wat de versie was voor de upgrade...
Deze (sterk versimpelde) query werkt als verwacht:
SQL:
1
2
3
4
5
6
7
8
9
10
| SELECT * FROM F_DocumentSets sets WHERE sets.FolderID IN (13536) GROUP BY sets.DocumentID LIMIT 0, 30 |
Dit levert 30 resultaten op, zonder de LIMIT waren dit er 10.176 geweest.
Nu gaat er fout als de volgende query wordt uitgevoerd waarbij 'SQL_CALC_FOUND_ROWS' is toegevoegd:
SQL:
1
2
3
4
5
6
7
8
9
10
| SELECT SQL_CALC_FOUND_ROWS * FROM F_DocumentSets sets WHERE sets.FolderID IN (13536) GROUP BY sets.DocumentID LIMIT 0, 30 |
Dit levert 1 resultaat op.
Dit wordt ook bevestigd met:
SQL:
1
| SELECT FOUND_ROWS(); |
Paar dingen die ik heb geconcludeerd:
- Als de query zonder LIMIT minder resultaten geeft gaat het wel goed (ik weet niet waar dit kantelpunt ligt).
- Als ik de GROUP BY achterwege laat gaat het wel goed.
- Als ik SQL_BIG_RESULT toevoeg gaat het wel goed.
Iemand?
Pierre - Motormedia.nl - Motor-Forum.nl - Motorshopper.nl - Motormeuk.nl - Motorstek.nl