Met veel zaken, red ik me meestal wel. Het zal meestal niet optimaal zijn, maar goed. Dat maakt even niet uit. Nu ben ik op het punt gekomen, dat ik het allemaal niet meer red en volgens mij is het database model ook erg beroerd.
Ik heb een soort van weblog welke best druk bezocht wordt. Echter heb ik Jet Profiler gebruikt om te kijken welke queries er nu verkeerd gaan en aan Jet Profiler te zien is dat zo'n beetje alles. Nu wil ik het database model helemaal opnieuw gaan opzetten.
Het gaat hem er vooral om dat ik 12000 posts heb in een tabel. Af en toe staat de status van een post of offline (status=0) en die zal dan niet moeten worden getoond. Ik zelf doe dan iets als SELECT id,title FROM post WHERE status=1. Om het aantal posts op te halen voor pagination doe ik dan iets als SELECT COUNT(*) FROM posts WHERE status=1.
Nu zegt Jet Profiler dat deze query heel erg langzaam is. Dit klopt ook, maar ik dacht omdat ik een index had op de status dat dit wel redelijk snel moest zijn, maar dat is dus niet zo.
Nu zit ik te denken om in de tabel post alleen maar die rijen te plaatsen die ook online zijn.
Ik kan het natuurlijk ook normaliseren door het status veld in een aparte tabel te zetten met daarin het postid en het statusid.
Dus:
post
- id
- title
status
- id
- code
poststatus
- id
- postid
- statusid
Nu ben ik wel benieuwd wat eigenlijk het beste is. Zoveel mogelijk normaliseren en als dat het geval is, moet ik dan ook een index plaatsen op het veld id in de tabel status (dit is een kleine tabel, dus zelf denk ik van niet (maar het id is al een PK dus het gebeurt eigenlijk al, hoe kan ik dat dan voorkomen als er geen index op moet?)) en een index over postid,statusid (of is het beter om een index te plaatsen over statusid,postid)? Of moet daar ook geen index op staan.
Het gaat er dus om dat ik sommige posts uit moet kunnen zetten. Of is het beter om die in een andere tabel te plaatsen.
Dit probleem kom ik eigenlijk continue tegen, ook zo met het indelen in rubrieken etc... Het is misschien heel basic, maar ik worstel er al heel lang mee. Uit boeken weet ik dat er zoveel mogelijk genormaliseerd moet worden, omdat MySQL daarvoor is gebouwd. Maar hoe zit het dan met het plaatsen van indexen over kleine tabellen met 2 rijen
Ik heb een soort van weblog welke best druk bezocht wordt. Echter heb ik Jet Profiler gebruikt om te kijken welke queries er nu verkeerd gaan en aan Jet Profiler te zien is dat zo'n beetje alles. Nu wil ik het database model helemaal opnieuw gaan opzetten.
Het gaat hem er vooral om dat ik 12000 posts heb in een tabel. Af en toe staat de status van een post of offline (status=0) en die zal dan niet moeten worden getoond. Ik zelf doe dan iets als SELECT id,title FROM post WHERE status=1. Om het aantal posts op te halen voor pagination doe ik dan iets als SELECT COUNT(*) FROM posts WHERE status=1.
Nu zegt Jet Profiler dat deze query heel erg langzaam is. Dit klopt ook, maar ik dacht omdat ik een index had op de status dat dit wel redelijk snel moest zijn, maar dat is dus niet zo.
Nu zit ik te denken om in de tabel post alleen maar die rijen te plaatsen die ook online zijn.
Ik kan het natuurlijk ook normaliseren door het status veld in een aparte tabel te zetten met daarin het postid en het statusid.
Dus:
post
- id
- title
status
- id
- code
poststatus
- id
- postid
- statusid
Nu ben ik wel benieuwd wat eigenlijk het beste is. Zoveel mogelijk normaliseren en als dat het geval is, moet ik dan ook een index plaatsen op het veld id in de tabel status (dit is een kleine tabel, dus zelf denk ik van niet (maar het id is al een PK dus het gebeurt eigenlijk al, hoe kan ik dat dan voorkomen als er geen index op moet?)) en een index over postid,statusid (of is het beter om een index te plaatsen over statusid,postid)? Of moet daar ook geen index op staan.
Het gaat er dus om dat ik sommige posts uit moet kunnen zetten. Of is het beter om die in een andere tabel te plaatsen.
Dit probleem kom ik eigenlijk continue tegen, ook zo met het indelen in rubrieken etc... Het is misschien heel basic, maar ik worstel er al heel lang mee. Uit boeken weet ik dat er zoveel mogelijk genormaliseerd moet worden, omdat MySQL daarvoor is gebouwd. Maar hoe zit het dan met het plaatsen van indexen over kleine tabellen met 2 rijen