Avatar billede gimpo Nybegynder
10. august 2005 - 12:12 Der er 4 kommentarer og
1 løsning

Optimal databasestruktur

Howdy

Jeg har et site hvor brugerne
kan oprette en profil med mange parametere.

Der kan väre 50+ parametere
som enten kan väre true eller false. (1 eller 0)

Hvilken database struktur skal jeg
välge for at opnå den bedste performance på sitet?

Jeg er meget usikker på hvad der vil väre mest effektivt,
og problemet er at jeg ikke kan bruge sql cache og at dette
site kan have rigtigt mange samtidige brugere.


Jeg tänkte på en lösning med et enkelt field
med hvor brugerens preferencer var angivet i et varchar field med 1 eller 0.
Feks. hvis vi siger at der var 8 preferencer og skaberen af profilen
havde tilvalgt de 2 förste, ville värdien se sådan ud "11000000".

Sidenhen kunne en sögning på hvor brugeren
havde tilvalgt de 2 förste preferencer se sådan ud:
SELECT * FROM Profiles WHERE preferences LIKE "11______".
(6 underscores for wildcards)

En anden lösning kunne väre at lave et tiny int field for
hver preference og så sätte det til 1 for tilvalgt.
En sögning ville så väre sådan:
SELECT * FROM Profiles WHERE P1=1 AND P2=1

Er der nogen som har et bedre bud?


Mvh Gimpo
Avatar billede arne_v Ekspert
10. august 2005 - 12:16 #1
Jeg vil absolut fraråde VARCHAR & LIKE løsningen.

TINYINT lyder fornuftig.

Husk indexes.
Avatar billede gimpo Nybegynder
10. august 2005 - 15:37 #2
Ja, jeg var også mest til den løsning.
Hvis vi nu siger at der er 30 "preference" fields, hvordan ville
du (arne_v) så indexere?
Min første indskydelse var en combined index for alle fields, men det kan
man vist ikke for så mange fields?
Avatar billede arne_v Ekspert
10. august 2005 - 15:39 #3
30 tinyint felter

index på enten dem alle eller de mest brugte til søgninger (men altså index på enkelt felter)
Avatar billede gimpo Nybegynder
10. august 2005 - 19:16 #4
Tak mester, læg venligst et svar.
Avatar billede arne_v Ekspert
10. august 2005 - 19:19 #5
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester