dit GELOOF je toch niet.
Stel we hebben een table van 16 miljoen records, met oa. een text blob en int(10) uns. UNIX timestamps.
Nu willen we echt iets heel moeilijks. Ja, het is even wennen en het komt niet vaak voor in de Wondere Wereld der Databases: we willen de 30 laatste geplaatste records hebben.
Ja, ik weet het dit is allemaal zeer gevorderd en de query is vrij complex ook:
select recordid, stamp
from table
order by stamp DESC
limit 30;
Nu doet mysql er (met index op stamp, of recordid/stamp of vv.; het maakt niks uit) ruim 3 seconden over deze toch wel erg pittige vraag
Als we de query omdraaien:
select recordid, stamp
from table
order by stamp ASC
limit 30;
dan verwent mysql ons met een tijd van 0.02 seconde.
WAAROM?
omdat mysql 3.23.x zo compleet KUT is, dat hij niet 'achterstevoren' kan sorteren op een index. dus.
Zie onder andere deze en deze discussies.
De enige oplossing is een inverted timestamp vermelden (dus jaar 2038 - timestamp).
Wie heeft dit nog meer opgemerkt en nog liever; opgelost?
Stel we hebben een table van 16 miljoen records, met oa. een text blob en int(10) uns. UNIX timestamps.
Nu willen we echt iets heel moeilijks. Ja, het is even wennen en het komt niet vaak voor in de Wondere Wereld der Databases: we willen de 30 laatste geplaatste records hebben.
Ja, ik weet het dit is allemaal zeer gevorderd en de query is vrij complex ook:
select recordid, stamp
from table
order by stamp DESC
limit 30;
Nu doet mysql er (met index op stamp, of recordid/stamp of vv.; het maakt niks uit) ruim 3 seconden over deze toch wel erg pittige vraag
Als we de query omdraaien:
select recordid, stamp
from table
order by stamp ASC
limit 30;
dan verwent mysql ons met een tijd van 0.02 seconde.
WAAROM?
omdat mysql 3.23.x zo compleet KUT is, dat hij niet 'achterstevoren' kan sorteren op een index. dus.
Zie onder andere deze en deze discussies.
De enige oplossing is een inverted timestamp vermelden (dus jaar 2038 - timestamp).
Wie heeft dit nog meer opgemerkt en nog liever; opgelost?
Klaar voor een nieuwe uitdaging.