Zadejte hledaný výraz...

Indexy MySQL

Wrent
verified
rating uzivatele
(11 hodnocení)
12. 4. 2010 19:38:19
Když v MySQL zapnu log queries not using indexes, vyhodí mi to do logu vlastně všechny dotazy, kde se nepoužívá WHERE.
Ale v některých dotazech prostě podmínka použít nejde, ne? Když chci například vybrat posledních pět řádků v tabulce, tak použiju akorát LIMIT, stejně tak při vypisování např kompletní tabulky.
Nebo nemám pravdu? Je nějaká podmínka? Nebo se toto do těch špatných MySQL dotazů nepočítá?
12. 4. 2010 19:38:19
https://webtrh.cz/diskuse/indexy-mysql#reply490349
tom11111
verified
rating uzivatele
12. 4. 2010 19:43:46
V tom tvem prikladu (poslednich 5 zaznamu) sice nepouzivas WHERE, ale asi bys mel pouzit ORDER BY, a ten uz by index pouzit mel.
12. 4. 2010 19:43:46
https://webtrh.cz/diskuse/indexy-mysql#reply490348
Vít Michalek
verified
rating uzivatele
(14 hodnocení)
12. 4. 2010 19:44:51
INDEX neznamená to co je za where.
Indexi slouží k předřezení(ryhlejšímuú hledám při použití daného where
12. 4. 2010 19:44:51
https://webtrh.cz/diskuse/indexy-mysql#reply490347
Wrent
verified
rating uzivatele
(11 hodnocení)
12. 4. 2010 20:06:02
Napsal mic362;495035
INDEX neznamená to co je za where.
Indexi slouží k předřezení(ryhlejšímuú hledám při použití daného where
jj já vim, i tak díky za odpověď - jde o to, že ten dotaz se zapíše do logu, protože index nevyužívá... a jestli je ten dotaz pak pomalejší... protože nevim, jak jinak bych ho napsal.
Napsal tom11111;495033
V tom tvem prikladu (poslednich 5 zaznamu) sice nepouzivas WHERE, ale asi bys mel pouzit ORDER BY, a ten uz by index pouzit mel.
no hele jde třeba o tohle:
takže to asi ne...
12. 4. 2010 20:06:02
https://webtrh.cz/diskuse/indexy-mysql#reply490346
duben
verified
rating uzivatele
(49 hodnocení)
15. 4. 2010 16:43:36
Napsal Wrent;495029
Když v MySQL zapnu log queries not using indexes, vyhodí mi to do logu vlastně všechny dotazy, kde se nepoužívá WHERE.
Ale v některých dotazech prostě podmínka použít nejde, ne? Když chci například vybrat posledních pět řádků v tabulce, tak použiju akorát LIMIT, stejně tak při vypisování např kompletní tabulky.
Nebo nemám pravdu? Je nějaká podmínka? Nebo se toto do těch špatných MySQL dotazů nepočítá?
V tom případě máš něco špatně. Protože index se použije pokaždé, nejenom při WHERE, JOIN, ORDER BY, GROUP BY apod. Primární clustrovaný index přímo určuje řazení dat fyzicky na disku, pokud dáváš SELECT, tak se automaticky data vybírají podle pořadí zápisu polí co chceš vypsat, takže je lepší dát tam jako první indexované pole.
Každopádně do log queries not using indexes se zapisují jen ty selecty, které používají pole, kde se nedá použít žádný index, který nad tabulkou je. Buď máš tedy špatně definované indexy, nebo špatně udělaný dotaz.
15. 4. 2010 16:43:36
https://webtrh.cz/diskuse/indexy-mysql#reply490345
ameeck
verified
rating uzivatele
(8 hodnocení)
19. 4. 2010 07:19:34
Napsal Wrent;495072
takže to asi ne...
Jaké indexy máš nad tou tabulkou definovány?
19. 4. 2010 07:19:34
https://webtrh.cz/diskuse/indexy-mysql#reply490344
Wrent
verified
rating uzivatele
(11 hodnocení)
22. 4. 2010 14:35:47
id_clanek, id_novinka
id_usertext
+ PRIMARY id
22. 4. 2010 14:35:47
https://webtrh.cz/diskuse/indexy-mysql#reply490343
ameeck
verified
rating uzivatele
(8 hodnocení)
23. 4. 2010 09:23:24
Vždyť tam nemáš jediný index, který by ten dotaz mohl použít. Musel by si mít definovaný index nad id anebo složeny index, kde by id bylo na prvním místě.
Pokud by si tam měl konstantní WHERE klauzi (tzn. např. filtrování podle dalšího parametru, který se pro jednotlivé řádky nemění), musel by ten parametr být na prvním místě v indexu a řadící pole na druhém.
Více zde:
http://dev.mysql.com/doc/refman/5.1/en/order-by-optimization.html
http://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html
V tom manuálu to zprvu může připadát složité, je to ale plné abstraktních příkladů.
23. 4. 2010 09:23:24
https://webtrh.cz/diskuse/indexy-mysql#reply490342
Wrent
verified
rating uzivatele
(11 hodnocení)
24. 4. 2010 00:15:35
Napsal ameeck;501194
Vždyť tam nemáš jediný index, který by ten dotaz mohl použít. Musel by si mít definovaný index nad id anebo složeny index, kde by id bylo na prvním místě.
Pokud by si tam měl konstantní WHERE klauzi (tzn. např. filtrování podle dalšího parametru, který se pro jednotlivé řádky nemění), musel by ten parametr být na prvním místě v indexu a řadící pole na druhém.
Více zde:
http://dev.mysql.com/doc/refman/5.1/en/order-by-optimization.html
http://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html
V tom manuálu to zprvu může připadát složité, je to ale plné abstraktních příkladů.
Aha, díky mrknu na to...
jinak nad ID je PRIMARY index, to se nepočítá?
24. 4. 2010 00:15:35
https://webtrh.cz/diskuse/indexy-mysql#reply490341
Pro odpověď se přihlašte.
Přihlásit