|
MYSQL: NULL, 0, VAI -1 KĀ NOKLUSĒTĀ VĒRTĪBA?
Ievietots: 2009-02-15 21:57:57, Skatīts: 1065 reizes
Šoreiz tutoriāļa vietā būs pārdomas. Situācijas izklāsts: Divas tabulas: aģents un darbības. Tabulai darbības, laukam agentsID ir definēts foreign key uz tabulu aģents.
Lai uzdevumu padarītu ne tik viennozīmīgu, pieņemsim, ka katrā tabulā ir 100’000 ierakstu un ka šie dati tiek izmantoti kādā programmā (piem. PHP). Līdz ar ko aktuāls kļūst jautājums par indeksēšanu un kārtošanu. NULL kā noklusētā vērtība. Pēc noklusējuma, izklāstītā situācijā tiek piedāvāts izmantot NULL. Šinī gadījumā veidojot jaunu ierakstu tabulā darbības, atslēga netiks meklēta tabulā aģents. No vienas puses vērtība NULL ir „nekas” un varētu domāt, ka netiek indeksēta. Savukārt izpildot vaicājumu:
redzam, ka indeksi tomēr tiek izmantoti. Nākošais apstāklis ir NULL vērtību apstrāde programmā (mūsu gadījumā PHP). Proti, atlasot NULL vērtības tās var rādīt kā tukšumu, kā tekstu „(null)” vai arī piešķirt kādu semantisko jēgu, piemēram, [aģents nav norādīts]. PHP gadījumā NULL tiks parādīts kā tukšā vērtība un labākajā gadījumā izsaucot Notice. Savukārt „skrupulozākās” valodās, piemēram , Java, tiks izsaukts exception. 0 kā noklusētā vērtība. Šinī gadījumā, tā ir vērtība un tieši ar tādu atslēgu (key) jābūt ierakstam tabulā aģenti, lai to varētu izmantot arī tabulā darbības. Ieguvums – šādi varētu iegūt noklusēto ierakstu, līdz ar ko atrisinātos jautājums ko darīt ja default vērtībai jābūt dažādās valodās. 1 vai -1 kā noklusētā vērtība. Trīs lietas labas lietas. Par noklusēto vērtību pieņemam pirmo ierakstu tabulā aģenti. Tātad 1. Savukārt ja id vērtība ir „signed”, tad iespējams izmantot arī -1; Zināms mulsums par negatīvo vērtību tomēr ir. Pirmkārt, nekad un nekur neesmu lasījis vai redzējis, ka par id vērtību izmantotu negatīvus skaitļus Otrkārt, bināri uzrakstot negatīvu skaitli vecākais bits (sign bit) mainās uz 1, iegūstot 1000....000010101. Un te nu es tā aizdomājos, kādu iespaidu tas varētu atstāt uz indeksēšanu pie vājprātīgi liela datu apjoma?
Līdzīgie raksti: Novērtē rakstu ar plezniņām! :) ![]() ![]() ![]() ![]() ![]()
|
||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|