Autor Zpráva
Hudruňg
Profil *
Zdravím, dá se nějak zoptimalizovat úplně triviální dotaz např.

SELECT * FROM users ORDER BY prijmeni LIMIT 10 ?

prekvapuje me, ze ikdyz je na sloupci prijmeni index, databaze prohledava vsechny radky (kdyz jich je kolem 10.000 docela to trva). Jde nějak zařídit, aby procházela jen oněch 10 řádků?

Díky
Hugo
Profil
Obávám se, že ne. MySQL nejpdřív sestaví odpověď na dotaz a až potom to oseká podle parametrů v limitu.
DoubleThink
Profil *
MySQL nejpdřív sestaví odpověď na dotaz a až potom to oseká podle parametrů v limitu.
Pokud řadíš podle zaindexovaného sloupce, tak by neměl:

If you use LIMIT row_count with ORDER BY, MySQL ends the sorting as soon as it has found the first row_count rows of the sorted result, rather than sorting the entire result. If ordering is done by using an index, this is very fast. (MySQL: 7.2.16. LIMIT Optimization)
Kajman_
Profil *
Snad jen pokud je při připojení použité jiné porovnání než pro index sloupečku, nemusí se pro seřazení varcharu index použít. Ale to jen tak střílím od boku.

A máte stejný problém i na poslední stabilní verzi?
Kajman_
Profil *
A vlastně ještě může být problém v tom, že pokud je ten index typu hash, tak to se na řazení použít nedá.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0