indoom Posted September 1, 2010 Report Share Posted September 1, 2010 Diez, ir liela jēga izmantot LIMIT 1 visur, kur vien tik vajadzīga viena rinda, pat ja zināms, ka tāpat tiks atgriezta tikai viena rinda? Vai tas dotu perfomancei kādu sīkumu klāt? Īsti nezinu, kā mysql select to dara, bet pēc loģikas liekas, ka ja pieprasu id=2, kas var būt tikai viens, un, ja lauks nav unique, tad mysql vienalga pārbaudīs visus ierakstus, vai vēl nav id=2, bet ja būs limit 1, tad tikko atradīs pirmos id=2, tad uzreiz tālāk nemeklēs. Vai tā ir patiesība? Tas pats attiecas uz UPDATE un DELETE. Kas gan citreiz var būt noderīgi, ja nu dēļ kļūdaina where neizdzēšas/neupdeitojas viss, bet tikai viena rinda. Quote Link to comment Share on other sites More sharing options...
Леший Posted September 1, 2010 Report Share Posted September 1, 2010 (edited) LIMIT 1 ir vajadzīgs, lai atlasītu vienu ierakstu variantā, kad bez LIMIT 1 tiks atlasīti viarāki. Citos apstākļos tas nav vajadzīgs, bet ja vajadzība rodās, tad vai nu nepareizs query, vai nepareiza bāzes struktūra. Edited September 1, 2010 by Леший Quote Link to comment Share on other sites More sharing options...
codez Posted September 1, 2010 Report Share Posted September 1, 2010 Ja tas būs vienīgais primary_key, kāds parasti ir id, tad viņš viņu atradīs uzreiz iekš BTREE ineksa un citus nemeklēs. Tas pats arī attiecas uz jebkuru lauku, kuram ir uzlikts indekss. Respektīvi mysql nonāks līdz zaram ar attiecīgo id un tālāk pa kreisi redzēs, ka mazāki id, bet pa labi lielāki - respektīvi tālāk vairs nemeklēs. Ja tas nav primary_key un tam arī nav nekādu citu indeksu, tad gan pārlasīs visus ierakstus, bet šijā gadījumā var pārlasīt visus ierakstus arī ar LIMIT 1, ja mysql-am paveicās vajadzīgo id atrast tikai pēdējā ierakstā. Quote Link to comment Share on other sites More sharing options...
indoom Posted September 1, 2010 Author Report Share Posted September 1, 2010 Paldies par atbildi. Tātad praktiski, ja ir indeksēti lauki, tad tas limit 1 neko papildus perfomancei nedod. 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.