Jump to content
php.lv forumi

mysql veiktspēja


mysql_query

Recommended Posts

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. Variants
Tabula:tabula_1
Laukumi: column_1, column_2, column_3, column_4 ....... column_500

 

2. Variants
Tabula: tabula_2
Laukumi: column_1, column_2, column_3, column_4 ....... column_10


Jeb, tabula_1 ir jāizdala papildus tabulās?

Link to comment
Share on other sites

  • Replies 34
  • Created
  • Last Reply

Top Posters In This Topic

@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 by jurchiks
Link to comment
Share on other sites

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ā.

Link to comment
Share on other sites

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, ...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...