Jump to content
php.lv forumi

datu glabāšana atsevišķā tabulā


codez

Recommended Posts

1.variants

table1:

id data1 data2 .....

1 150 260

2 160 30

3 200 400

 

1.kverijs

SELECT id FROM table1 WHERE data1>100 and data2>200

 

2.variants

table2:

id

1

2

3

 

table3:

t2id fid data

1 1 150

1 2 260

2 1 160

2 2 30

3 1 200

3 2 400

 

Tātad 2 varianti. Pirmais - visi dati glabājas vienā tabulā, otrais - dati glabājas atsevišķā tabulā (table3) un norāda uz datu īpašnieku (table2) ar t2id

Kā tagad uzrakstīt kveriju tā, lai iegūtu rezultātu kā pirmajā variantā. Respektīvi es varētu uzdot nosacījumus gan piemā veida datiem, gan otrā veida datiem un man atlasītu visus atbilstošos table2 id.

Mani interesē tieši ātrākais variants kā to var izdarīt un arī ātruma analīze.

Cik noprotu 1. kverijā ātrums būs O(log2(N)*log2(N)), ja data1 un data2 būs indeksētas ar bināro koku, varbūt arī kļūdos.

Link to comment
Share on other sites

2. variants izskatās diezgan līks.

Es ņemtu pirmo variantu.

 

Ja jau gribi vēl ātrāk, tad iespējams jādala tie data1 un data2 katrs savā tabulā. Tadā gadījumā sanāks 2 kveriji: O(log2(N) + log2(N)) = O(log2(N)).

Link to comment
Share on other sites

Man īsti nevajag ātrāku, man vajag universālāku, jo var nākt jauni datu lauki un gribētos tā, lai tos jaunos laukus var ērti pievienot. Bez tam katram no laukiem vēl ir savas defaultās vērtības:

 

id fid value

 

Kur fid norāda lauka id un value kādu no lauka default vērtībām.

 

 

P.S. Respektīvi, man vajag ātrāko no universālāka varianta, kurā var ērti pievienot jaunus datu laukus.

Edited by codez
Link to comment
Share on other sites

×
×
  • Create New...