Lynx Posted July 29, 2006 Report Share Posted July 29, 2006 Palasīju vienu rakstu par mysql query optimizāciju un izlasīju interesantu lietu, ja vēlamies selektot tikai 1nu rowu tad vienmēr būtu jalieto LIMIT 1. Līdz šim es LIMIT nelietoju gadījumos, ja WHERE arguments ir primary un ir zināms, ka, piemēram, WHERE id = 12 var būt tikai viens. Cik sapratu no raksta, ka bez tā LIMIT mysql izskries vēl cauri db un meklēs vai vēl kāds ieraksts neatbilst kritērijam. Papētiju mysql manuāli un pie Optimizācijas, SELECT un LIMIT sadaļām neko par šo lietu neatradu. Vienīgi atceros, ka agrāk, kaut kur lasīju, ka mysql pats optimizē šāda tipa pieprasījumus un tas LIMIT nav jāraksta, ja tiek izmantots primary key, jo pēc pirmā atrastā ieraksta automātiska tiek pārtraukta meklēšana. Itkā veicu benchmarkingu un rezultāti sakrita, bet nekad nevar būt drošs. Kāda citiem ir pieredze šajā jautājumā? Link to comment Share on other sites More sharing options...
bubu Posted July 29, 2006 Report Share Posted July 29, 2006 MySQL visai tabulai NEKAD neskries cauri "WHERE id=12" veida pieprasījumos, ja id ir PRIMARY KEY. EXPLAIN mēģināji? Link to comment Share on other sites More sharing options...
Lynx Posted July 29, 2006 Author Report Share Posted July 29, 2006 id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE tabula const PRIMARY PRIMARY 4 const 1 Skaidrs, tad esmu visu laiku darījis pareizi un rakstā bija neprecīza informācija par to, ka vienmēr jalieto LIMIT. Link to comment Share on other sites More sharing options...
bubu Posted July 29, 2006 Report Share Posted July 29, 2006 Moška vecs raksts un attiecās uz kautkādu vecu (3.x) versiju. Link to comment Share on other sites More sharing options...
Recommended Posts