Ik heb hier een simpele db die er ongeveer een structuur heeft als volgt:
Daar zit in de products een pakweg 1 miljoen rijen
De vendors heeft er een stuk of 50.000 en invoices nog maar iets van 500
Wanneer ik bijvoorbeeld zoiets uitvoer
Dan is ie ongeveer 30 seconden zoet. Los van de PK's zit er een index op Invoice.ProductID
Nu dacht ik dat ik wel met een beetje rommelen met mijn indexes een eind zou komen, maar ik krijg 'm niet echt sneller. Haal ik de indexes weg, dan lijkt ie oneindig lang door te gaan.
Om te testen heb ik de tabellen op mijn Oracle machine gezet en dezelfde query gedraaid.
Nog geen indexes aangemaakt etc en in toad op F9 rammen en hoppa: 260ms en resultaat.
Nu weet ik ook wel dat Oracle een andere klasse is dan SQLite, maar dit verschil is echt mega.
Als ik een beetje ga googlen dan vind ik mensen met SQLite db's van enkele gigabytes die niet eens klagen, hoe kan dat dan? Dit model is verre van complex en kom je ongeveer overal tegen.
Of doe ik iets fout?
code:
1
2
3
4
5
6
7
8
9
10
11
12
| Products ID number (primary key) UNIQUE Description varchar VendorID number Vendors ID number (primary key) UNIQUE Name varchar Invoices ID number (primary key) UNIQUE ProductID number |
Daar zit in de products een pakweg 1 miljoen rijen
De vendors heeft er een stuk of 50.000 en invoices nog maar iets van 500
Wanneer ik bijvoorbeeld zoiets uitvoer
SQL:
1
2
3
4
5
6
7
8
9
10
11
| SELECT p.ID, p.Description, v.Name, COUNT (inv.ID) FROM Products p LEFT JOIN Invoices inv ON inv.ProductID = p.ID LEFT JOIN Vendors v ON v.ID = p.VendorID GROUP BY p.ID, p.Description, v.Name ORDER BY COUNT (inv.ID) DESC; |
Dan is ie ongeveer 30 seconden zoet. Los van de PK's zit er een index op Invoice.ProductID
Nu dacht ik dat ik wel met een beetje rommelen met mijn indexes een eind zou komen, maar ik krijg 'm niet echt sneller. Haal ik de indexes weg, dan lijkt ie oneindig lang door te gaan.
Om te testen heb ik de tabellen op mijn Oracle machine gezet en dezelfde query gedraaid.
Nog geen indexes aangemaakt etc en in toad op F9 rammen en hoppa: 260ms en resultaat.
Nu weet ik ook wel dat Oracle een andere klasse is dan SQLite, maar dit verschil is echt mega.
Als ik een beetje ga googlen dan vind ik mensen met SQLite db's van enkele gigabytes die niet eens klagen, hoe kan dat dan? Dit model is verre van complex en kom je ongeveer overal tegen.
Of doe ik iets fout?