Aan de hand van een projectje waarmee ik bezig ben ik wat gaan klooien met MySQL, zo is het zo dat MySQL blijkt alles standaard te sorteren op volgorde waarop ze zijn ingevoegd. Ook na een UPDATE. Ik heb de ORDER BY over m'n veld post_id staan om te zorgen dat ze in de juiste volgorde eruit komen, terwijl (tot zover ik heb gemerkt) ze standaard in dezelfde volgorde naar buiten komen.
Nu is mijn vraag (en nee, heb dit nerges kunnen vinden), kan dit fout gaan doordat MySQL op een of andere manier ze niet meer zo sorteerd? Of is het in dit mogelijk om met een gerust hart de ORDER BY statment weg te laten?
Voor de duidelijkheid: het weglaten van ORDER BY scheelt factor 30 in de tijd. Dit heb ik getest op een DB met 20.000 waardes waarvan er 10.000 geselecteerd worden met een LIMIT van 0, 25. Het desbetreffende veld waar de ORDER BY bij staat is een INT 64 veld met auto_increment. Dit veld heeft (uiteraard) een index.
Dit zijn de query's waarmee getest is:
Edit: Typo.
Edit2: Ter info: De draaiende MySQL is 3.23.47 die binnenkort word upgedate naar MySQL 4 (Laatste WIN32 Versie)
Edit3: Foutje in gedachtengang, verkeerde veld in verhaal getypt
nu maar ff verbeterd
(maakt niks uit voor het verhaal btw)
Nu is mijn vraag (en nee, heb dit nerges kunnen vinden), kan dit fout gaan doordat MySQL op een of andere manier ze niet meer zo sorteerd? Of is het in dit mogelijk om met een gerust hart de ORDER BY statment weg te laten?
Voor de duidelijkheid: het weglaten van ORDER BY scheelt factor 30 in de tijd. Dit heb ik getest op een DB met 20.000 waardes waarvan er 10.000 geselecteerd worden met een LIMIT van 0, 25. Het desbetreffende veld waar de ORDER BY bij staat is een INT 64 veld met auto_increment. Dit veld heeft (uiteraard) een index.
Dit zijn de query's waarmee getest is:
code:
1
2
3
4
5
6
| SELECT p.post_time, p.post_text , u.username, u.user_sig, u.user_title, u.user_level FROM posts p LEFT JOIN users u ON p.post_user = u.user_id WHERE p.post_topic = '$topic_id' LIMIT '$start', '$tpp' |
code:
1
2
3
4
5
6
7
| SELECT p.post_time, p.post_text , u.username, u.user_sig, u.user_title, u.user_level FROM posts p LEFT JOIN users u ON p.post_user = u.user_id WHERE p.post_topic = '$topic_id' ORDER BY p.post_id LIMIT '$start', '$tpp' |
Edit: Typo.
Edit2: Ter info: De draaiende MySQL is 3.23.47 die binnenkort word upgedate naar MySQL 4 (Laatste WIN32 Versie)
Edit3: Foutje in gedachtengang, verkeerde veld in verhaal getypt