zauważyłem jakiś czas temu u siebie dużą wielkość Handler_read_rnd_next, po około godzinie pracy serwera: 2 530 k
i teraz, włączyłem logowanie do pliku zapytań nie wykorzystujących poprawnie indexów, z bardziej rażących przykładów:
tabela ranking:
CREATE TABLE `ranking` ( `id_uzyt` mediumint(7) NOT NULL DEFAULT '0', `grupa` smallint(6) NOT NULL DEFAULT '0', `data` date DEFAULT NULL, `wartosc_portfela` double(13,2) NOT NULL DEFAULT '0.00', `miejsce` smallint(6) NOT NULL DEFAULT '0', `miejscepop` smallint(6) NOT NULL DEFAULT '0', `login` char(20) collate utf8_polish_ci NOT NULL DEFAULT '', `procentinv` float(4,2) NOT NULL DEFAULT '0.00', `zmianawart1` float(6,2) NOT NULL DEFAULT '0.00', `zmianawart2` float(6,2) NOT NULL DEFAULT '0.00', `miejscetydz` mediumint(9) NOT NULL, `zmianawart3` float(6,2) NOT NULL DEFAULT '0.00', `miejscemies` mediumint(9) NOT NULL, KEY `miejsce` (`miejsce`), KEY `id_uzyt` (`id_uzyt`), KEY `grupa` (`grupa`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
zapytanie:
mysql> explain select * from ranking order by miejsce ASC limit 8300,100; +----+-------------+---------+-------+---------------+---------+---------+------+------+-------+ +----+-------------+---------+-------+---------------+---------+---------+------+------+-------+ | 1 | SIMPLE | ranking | index | NULL | miejsce | 2 | NULL | 8472 | | +----+-------------+---------+-------+---------------+---------+---------+------+------+-------+ 1 row in set (0.00 sec)
całkowita liczba rekordów 8472 - skanuje je wszystkie by podać mi wynik
i teraz pytanie brzmi co robię źle?
byłbym wdzięczny za jakieś wskazówki
pozdrawiam