Aleksandrs Posted August 6, 2005 Report Share Posted August 6, 2005 Kāds būtu labākais(ātrāk izpildāmas) variants priekš MyISAM tabulu struktūras? Paraugs #1: user tabula: id|uid|user_name|pass|info Paraugs #2: user_id tabula: id|uid user tabula: uid|user_name user_pass tabula: uid|pass user_info tabula: uid|info Paraugs #3: user tabula: id|uid|user_name|pass user_info tabula: uid|info Lauku tipi: id - mediumint(8) unsigned; uid - mediumint(8) unsigned; user_name - varchar(20); info - text Lauku īpašības: id - primary,auto_increment; uid - primary; visiem - No NULL Select`i galveno kārt būs: Noskaidrot vai konkrētajam lietotājam atbilst konkrētā parole Pēc user_name, uid izvilkšana Pēc uid, user_name izvilkšana Pēc uid, user_name un info izvilkšana Kādi ieteikumi? Link to comment Share on other sites More sharing options...
bubu Posted August 6, 2005 Report Share Posted August 6, 2005 (edited) #2 ir galīgs sviests. #3 ir jēdzīgs tikai tad, ja tajā info glabāsi bildes #1 ir way to go! Atliek tikai pareizus indeksus uzlikt: Noskaidrot vai konkrētajam lietotājam atbilst konkrētā parole (user_name, user_pass) Pēc user_name, uid izvilkšana (user_name) Pēc uid, user_name izvilkšana (uid PRIMARY KEY) Pēc uid, user_name un info izvilkšana (uid PRIMARY KEY) Edited August 6, 2005 by bubu Link to comment Share on other sites More sharing options...
bra Posted August 6, 2005 Report Share Posted August 6, 2005 kā tad būtu pāreizi jāindeksē? tabulas? Link to comment Share on other sites More sharing options...
Aleksandrs Posted August 6, 2005 Author Report Share Posted August 6, 2005 (edited) bra, viņš parādija kuriem laukiem kādus indeksus salikt(skat. iekavas)... bubu, bet ja lauku daudzums vienā tabulā ir ap 30, un to selecti notiek 3x mazāk nekā selecti izvilkt pēc uid, user_name vai šādā gadijumā user_name nebūtu jāuztaisa atsevišķa tabula? Edited August 6, 2005 by Aleksandrs Link to comment Share on other sites More sharing options...
bubu Posted August 6, 2005 Report Share Posted August 6, 2005 Tev vai tad tur ir 30 lauki? bra: iesākumā palasi šo te - http://dev.mysql.com/doc/mysql/en/mysql-indexes.html Tai pašā manuālī ir arī citās vietās tas pieminēts. Link to comment Share on other sites More sharing options...
Aleksandrs Posted August 6, 2005 Author Report Share Posted August 6, 2005 Nav, bet ja būtu, kā tad vajadzētu taisīt ? Link to comment Share on other sites More sharing options...
bubu Posted August 6, 2005 Report Share Posted August 6, 2005 Atkarīgs no tajā glabājamiem datiem. Ja tur ir kautkāda infa par lietotāju, tipa adrese, epasts, telfons, vecums, u.c. tāda veida draza, tad nesakatu problēmas ar tiem 30 laukiem. Link to comment Share on other sites More sharing options...
Klez Posted August 6, 2005 Report Share Posted August 6, 2005 man vienaa tabulaa ir 24 lauki un probleemu nekaadu. viss atkariigs no indeksaacijas :) un ko tu katraa selectaa panjem, ja tew waik tikai pass tad: SELECT `pass` FROM `tabula` WHERE `uid` = 2 ja viak info tad SELECT `info`, `cic_lauks`, `veel_cic_lauks` FROM `tabula` WHERE `uid` = 2 tad tikai masiivs augs ... galvenais ir indeks .. Link to comment Share on other sites More sharing options...
Aleksandrs Posted August 7, 2005 Author Report Share Posted August 7, 2005 Lielas jau problēmas nebūs, bet es gribu izprast kā pareizi tabulas taisīt, ja pieprasijumi tai tabulai ir ļoti lieli, piemēram skaitītāju sistēmā... SELECT b.info FROM tabula a, tabula2 b WHERE a.uid=b.uid AND a.name='Vards' 1. Cik daudz šajā gadijumā B tabulas lauku daudzums var ietekmēt SELECT izpildi? 2. Cik liela nozīme ir, ka tabulā tikai INT veidīgi lauki vai VARCHAR veidīgi lauki? Tos labāk maisīt kopā vai atdalīt ar tabulām? Link to comment Share on other sites More sharing options...
Recommended Posts