Limit wierszy wyjaśniających MySQL
Poniżej znajduje się moje zapytanie, aby uzyskać 20 wierszy z genre_id 1.
EXPLAIN SELECT * FROM (`content`)
WHERE `genre_id` = '1'
AND `category` = 1
LIMIT 20
Mam łącznie 654 wiersze w tabeli treści z genre_id 1, mam indeks na genre_id iw powyższym zapytaniu ograniczam wynik do wyświetlenia tylko 20 rekordów, które działają dobrze, ale wyjaśnienie pokazuje 654 rekordów w wierszach, próbowałem dodać indeks do kategorii ale nadal ten sam wynik, a następnie także usunąłem kategorię AND = 1, ale te same wiersze się liczą:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE content ref genre_id genre_id 4 const 654 Using where
TUTAJ Znalazłem odpowiedź
LIMIT nie jest brany pod uwagę przy szacowaniu liczby wierszy Nawet jeśli masz LIMIT, który ogranicza liczbę wierszy, które będą sprawdzane, MySQL będzie nadal drukował pełną liczbę
Ale także w komentarzach opublikowano kolejną odpowiedź:
LIMIT jest teraz brany pod uwagę przy szacowaniu liczby wierszy. Nie jestem pewien, która wersja rozwiązała ten problem, ale w 5.1.30 EXPLAIN dokładnie uwzględnia LIMIT.
Używam MySQL 5.5.16 z InnoDB. tak jak w powyższym komentarzu nadal nie bierze pod uwagę. Więc moje pytanie brzmi, czy mysql przechodzi przez wszystkie 654 wiersze, aby zwrócić 20 wierszy, nawet jeśli mam ustawiony limit? Dzięki