codez Posted June 18, 2008 Report Share Posted June 18, 2008 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 More sharing options...
bubu Posted June 18, 2008 Report Share Posted June 18, 2008 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 More sharing options...
codez Posted June 18, 2008 Author Report Share Posted June 18, 2008 (edited) 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 June 18, 2008 by codez Link to comment Share on other sites More sharing options...
bubu Posted June 18, 2008 Report Share Posted June 18, 2008 Tādā gadījumā, ja jau to dataX skaits var mainīties (uzreiz tā vajadzēja teikt!), otrais variants ir pareizas. Link to comment Share on other sites More sharing options...
codez Posted June 18, 2008 Author Report Share Posted June 18, 2008 Tikai jautājums paliek atklāts - Kāds ir ātrākais kverijs, lai dabūtu visus id, kuri atbilst dažādiem dataX nosacījumiem. Link to comment Share on other sites More sharing options...
Recommended Posts