Ik heb een probleem met onze MySQL 4 database. (We kunnen helaas nog niet over op een nieuwere versie van MySQL, maar dat willen we wel gaan doen (en de prioriteit daarvan wordt steeds sneller naar voren geschoven
).
Sinds ongeveer een maand, kiest de engine niet meer de juiste indexen als ik een selectie op de database doe en ik kan niet verklaren waarom. Het speelt niet op 1 enkele tabel, maar meerdere tabellen hebben er last van. Aangezien we een database hebben die heel veel records bevat, is het kiezen van een verkeerde index funest voor de performance.
Als ik op dit probleem google vind ik alleen oplossingen door "use index" te gebruiken. Dat werkt idd wel prima, maar onze code is behoorlijk uitgebreid, dus het is vrij veel werk om overal een use index neer te zetten. Bovendien wil ik liever geen index forceren, omdat ik graag de database de optimale index laat kiezen. Maar nu kiest hij dus niet meer de optimale index.
Voorbeeld:
ik deed tot een maand geleden altijd:
De database pakte dan automatisch xmldate als te gebruiken index. En dat werkt prima. Tegenwoordig loopt hij bij deze query "vast" en moet ik echt doen:
en dan is het gewoon millisecondenwerk om resultaat te krijgen.
Is er ergens een setting of is er een ander mogelijke manier om dit probleem op te lossen.
We hebben overigens 2 weken geleden nog, omdat we hoopten dat dat de problemen zou verhelpen, alle tables geoptimized.
Sinds ongeveer een maand, kiest de engine niet meer de juiste indexen als ik een selectie op de database doe en ik kan niet verklaren waarom. Het speelt niet op 1 enkele tabel, maar meerdere tabellen hebben er last van. Aangezien we een database hebben die heel veel records bevat, is het kiezen van een verkeerde index funest voor de performance.
Als ik op dit probleem google vind ik alleen oplossingen door "use index" te gebruiken. Dat werkt idd wel prima, maar onze code is behoorlijk uitgebreid, dus het is vrij veel werk om overal een use index neer te zetten. Bovendien wil ik liever geen index forceren, omdat ik graag de database de optimale index laat kiezen. Maar nu kiest hij dus niet meer de optimale index.
Voorbeeld:
ik deed tot een maand geleden altijd:
code:
1
| SELECT [fields] FROM xmltable WHERE device = 'AAA' and xmldate = now() |
De database pakte dan automatisch xmldate als te gebruiken index. En dat werkt prima. Tegenwoordig loopt hij bij deze query "vast" en moet ik echt doen:
code:
1
| SELECT [fields] FROM xmltable USE INDEX(xmldate) WHERE device = 'AAA' and xmldate = now() |
en dan is het gewoon millisecondenwerk om resultaat te krijgen.
Is er ergens een setting of is er een ander mogelijke manier om dit probleem op te lossen.
We hebben overigens 2 weken geleden nog, omdat we hoopten dat dat de problemen zou verhelpen, alle tables geoptimized.