/ / Mysql wybierz * z tabel, w których primary_key w (1,2 ,, ...) jest bardzo wolny - mysql, sql, performance

Mysql wybierz * z tabel, w których primary_key w (1,2 ,, ...) jest bardzo wolny - mysql, sql, performance

Mam problem z jednym z moich zapytań, który jest bardzo powolny od czasu do czasu.

SELECT * FROM table WHERE primary_key IN (1,2,...)

bardzo powolne czasami nawet 5s dla około 100 wpisów. Oczywiście mamy indeks na kluczu podstawowym. Czy istnieje sposób na optymalizację tego zapytania. Stół ma nieco ponad 100 milionów wpisów.

Odpowiedzi:

0 dla odpowiedzi № 1

Czy możesz napisać EXPLAIN, być może coś jest podejrzanego.

Ponadto, jeśli jest to tabela bazy danych MyISAM i masz wysokie współbieżne INSERT, tabela zostanie zablokowana podczas wstawiania, więc twoje SELECT mogą blokować w tym czasie.


0 dla odpowiedzi nr 2

W przypadku tabeli rekordów 100M nie można zrobić wiele, jeśli chodzi o optymalizację zapytań, ponieważ jest ona dość prosta.

Jeśli Twój stół to InnoDB / XtraDB (i jeśli nie polecam używania tych silników), możesz zajrzeć do innodb_buffer_pool_size zmienna - ważne jest, aby używany indeks pasował do pamięci, aby uzyskać najlepszą wydajność dla zapytań.