mysql_query Posted August 26, 2015 Report Share Posted August 26, 2015 Vai ir starpība starp 1. un 2. variantu pieprasījuma izpildes laiku? Ņemot vērā ka 90% tabulas laukumi sastāv no INT un DECIMAL,lietojot SELECT * un ja lieto SELECT column_1,column_2 (pēc vajadzības). Ievadīto datu rindiņas abās tabulās vienāds, piem. 50. 1. VariantsTabula:tabula_1Laukumi: column_1, column_2, column_3, column_4 ....... column_500 2. VariantsTabula: tabula_2Laukumi: column_1, column_2, column_3, column_4 ....... column_10Jeb, tabula_1 ir jāizdala papildus tabulās? Quote Link to comment Share on other sites More sharing options...
Blitz Posted August 26, 2015 Report Share Posted August 26, 2015 Nekas nav jaizdala. ja tabulā kolonu kopējais skaits nav stipri lielāks par vajadzīgo kolonu skaitu tad lieto *, pieņemu ka datubāzes query parserim būs vieglāka dzīvē. Quote Link to comment Share on other sites More sharing options...
mysql_query Posted August 26, 2015 Author Report Share Posted August 26, 2015 Tabula:tabula_1 kolonu skaits ir: 500 Tabula:tabula_2 kolonu skaits ir: 10Vai šo faktu ņēmi vērā, ja tā tad ok, būs javeic testi, Quote Link to comment Share on other sites More sharing options...
Blitz Posted August 26, 2015 Report Share Posted August 26, 2015 Ja jautājums bij vai 10 integer kolonas būs izselektēt ātrāk nekā 500 pie vienāda row skaita, tad, jā protams, 10 kolonas būs ātrāk. Quote Link to comment Share on other sites More sharing options...
mysql_query Posted August 26, 2015 Author Report Share Posted August 26, 2015 Paldies! Quote Link to comment Share on other sites More sharing options...
Kaklz Posted August 26, 2015 Report Share Posted August 26, 2015 Ja paskatamies vienu soli atpakaļ, tad, ja tev tabulai ir 500 kolonas, tad tev kaut kas ir šķērsām ar DB struktūru. Quote Link to comment Share on other sites More sharing options...
Kavacky Posted August 26, 2015 Report Share Posted August 26, 2015 ExcelDB Quote Link to comment Share on other sites More sharing options...
Kasspars Posted August 26, 2015 Report Share Posted August 26, 2015 Kāds tad ir tas max lauku skaits līdz, kuram DB struktūra vēl ir pareiza? Quote Link to comment Share on other sites More sharing options...
Kavacky Posted August 26, 2015 Report Share Posted August 26, 2015 Depends... kā vienmēr. Bet veselais saprāts saka, ka tu gribi dalīt loģiskās vienībās max ātri, ja negribi problēmas. "And of course, as always, kill Hitler." / Colonel Chestbridge @ Danger 5 / Quote Link to comment Share on other sites More sharing options...
spainis Posted August 27, 2015 Report Share Posted August 27, 2015 Kāds tad ir tas max lauku skaits līdz, kuram DB struktūra vēl ir pareiza? A table can contain a maximum of 1000 columns. https://dev.mysql.com/doc/refman/5.0/en/innodb-restrictions.html Quote Link to comment Share on other sites More sharing options...
jurchiks Posted August 27, 2015 Report Share Posted August 27, 2015 (edited) @Kasspars - man liekas, 25 kolonnas ir ļoti saprātīgs limits. Bet par autora 500 kolonnu piemēru - tur noteikti ir nepārdomāta tabulas struktūra. Visdrīzāk, tur ir tabula ar 500 kolonnām ala "is_public TINYINT" un kaudzi optional datu, kuri 99% ierakstu ir vienādi. Tādā gadījumā būtu daudz efektīgāk taisīt divas tabulas, no kurām viena satur obligātos laukus (tabula "records", lauki "id, name, field1 field2, ... fieldN"), un otru tabulu "record_properties" ar struktūru "record_id, field_name, field_value", kurā tiek ierakstīti tikai dati, kas atšķiras no default. Edited August 27, 2015 by jurchiks Quote Link to comment Share on other sites More sharing options...
Blitz Posted August 27, 2015 Report Share Posted August 27, 2015 Efektīgāk kādā ziņā? Performances? Diez vai... Quote Link to comment Share on other sites More sharing options...
daGrevis Posted August 27, 2015 Report Share Posted August 27, 2015 Kas vainas `is_public` like kolonām? Quote Link to comment Share on other sites More sharing options...
Kasspars Posted August 27, 2015 Report Share Posted August 27, 2015 Tie visi izdomātie kolonu limiti ir smieklīgi. Ja man tiešām vajag 500 kolonnas es tās likšu vienā tabulā. Nevis speciāli domāšu dalīšu pa tabulām, tikai lai ievērotu izdomātu limitu. Ja būs vajadzība filtrēt pēc 5 laukiem, kur katrs ir savā tabulā, tad man nāksies tās visas tabulas JOINot un tad filtrēt. Ja vēl vajadzēs pēc tām pašām kolonnām ORDER BY, tad tas query būs ļoti, ļoti lēns. MySQLam ir ierbežojumus, ja sortē pēc joinotas tabulas, tad netiek izmantots indekss. Ja tabulā ir simtiem tūkstoši ieraksti, tad tas viss pārvēršas lielā performance murgā. Quote Link to comment Share on other sites More sharing options...
briedis Posted August 27, 2015 Report Share Posted August 27, 2015 Tie visi izdomātie kolonu limiti ir smieklīgi. Ja man tiešām vajag 500 kolonnas es tās likšu vienā tabulā. Nevis speciāli domāšu dalīšu pa tabulām, tikai lai ievērotu izdomātu limitu. Aha. un tāpēc mēs saskaramies ar šādām kolonnām (true story :D): file_id, file_id2, file_id3, ... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.