Autor | Zpráva | ||
---|---|---|---|
Itak Profil * |
#1 · Zasláno: 9. 10. 2011, 20:08:03
Ahoj, mám tuto tabulku:
CREATE TABLE IF NOT EXISTS `logs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) DEFAULT NULL, `typ_objektu` set(....nejake hodnoty....) NOT NULL, `id_objektu` varchar(63) NOT NULL, `ip` varchar(16) DEFAULT NULL, `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `note` varchar(250) NOT NULL, PRIMARY KEY (`id`), KEY `user_id` (`user_id`), KEY `id_objektu` (`id_objektu`), KEY `ts` (`timestamp`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=108494 ; Obsah je cca 90 000 řádků. Pokud zavolám tento dotaz: SELECT SQL_CALC_FOUND_ROWS * FROM LOGS ORDER BY timestamp DESC LIMIT 0 , 50 Tak mi dotaz trvá asi 30 sekund. Myslíte, že se najde nějaký optimilizace? id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE LOGS ALL NULL NULL NULL NULL 86220 Using filesort |
||
Tori Profil |
#2 · Zasláno: 9. 10. 2011, 21:09:59
Pokud nerecyklujete ID, tak jsou záznamy uložené podle timestamp vzestupně. Tzn by možná bylo rychlejší vypsat prostě posledních 50 řádků, bez řazení (dvěma dotazy).
|
||
Kajman_ Profil * |
#3 · Zasláno: 9. 10. 2011, 21:12:04
Když vynecháte SQL_CALC_FOUND_ROWS, bude v explain rozdíl?
Když poradíte použití indexu ts, bude rozdíl? |
||
Itak Profil * |
#4 · Zasláno: 9. 10. 2011, 22:10:25
Tori: na to bych se nechtěl úplně spoléhat do budoucna
Kajman: pokud CALC vynechám, tak to je za 0,006 s .-), ale počet všech řádku potřebuji znát - pokud nasadím force nebo use index, tak PhpMyAdmin nic nevrátí, jako by neměl výsledek SELECT SQL_CALC_FOUND_ROWS * FROM LOGS FORCE INDEX (ts) ORDER BY timestamp DESC LIMIT 0 , 50 |
||
Alphard Profil |
#5 · Zasláno: 9. 10. 2011, 22:29:11 · Upravil/a: Alphard
Itak:
„ale počet všech řádku potřebuji znát“ Zkuste select count(id) from logs
|
||
Kajman_ Profil * |
#6 · Zasláno: 10. 10. 2011, 09:04:59
Itak:
„tak PhpMyAdmin nic nevrátí, jako by neměl výsledek“ Nevypíše ani chybu? A v jiném programu, třeba Admineru? Zkuste zkontrolovat název indexu, zda ts opravdu existuje: show index from logs .
|
||
Časová prodleva: 13 let
|
0