Visa ett inlägg
Oläst 2011-12-22, 14:40 #4
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Håller också med Conny i det mesta, och en eloge för att alltid ha energi att skriva ordentliga strukurer i svaren

Stora skillnaden är att jag skulle lägga up det som:
EAV table: entity_id (int), attribute_id (int), value (varchar)
(Entity id är alltså användar-id i fallet med user_eav-tabellen)

Attribute table: attribute_id (int), attribute_name (varchar), attribute_type etc.

Gällande var man lägger index är jag av uppfattningen att man måste veta mer om datan och användningen för att föreslå en bra lösning. Använder man t ex InnoDB ska man vara riktigt noga med PK för att datan kommer klustras efter det och alla sekundärnycklar kommer innehålla hela primärnyckeln. Har man en liten datamängd och mycket läsningar är täckande index väldigt effektiva. Har man mycket writes och inte är sårbar för små brister i dataintegritet så ger FKs dålig prestanda.

Kan man använda kolumner och fåräknat antal tabeller istället för EAV får man MYCKET bättre prestanda. Någon som hört någon klaga på Magento? Deras modeller är extremt normaliserade enligt EAV ... därför krävs 10 gånger kraftigare servrar men systemet har en enorm flexibilitet.
Clarence är inte uppkopplad   Svara med citatSvara med citat