Jump to content
php.lv forumi

LIMIT 1


indoom

Recommended Posts

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.

Link to comment
Share on other sites

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

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