Запрос MySQL замедляется, когда или представлен по индексуMySql

Форум по Mysql
Ответить
Anonymous
 Запрос MySQL замедляется, когда или представлен по индексу

Сообщение Anonymous »

У меня есть следующая таблица с 261,045 записями.
Первый запрос довольно быстрый, но когда я ввожу или или в () на функции продукта, он значительно замедляет.EXPLAIN ANALYZE
SELECT COUNT(ProductID) AS ProductCount
FROM Products
WHERE ProductActive = 1
AND ProductFeature = 0;

-> Aggregate: count(Products.ProductID) (cost=6097 rows=1) (actual time=110..110 rows=1 loops=1)
-> Filter: ((Products.ProductFeature = 1) and (Products.ProductActive = 1)) (cost=3063 rows=30343) (actual time=0.154..108 rows=30866 loops=1)
-> Intersect rows sorted by row ID (cost=3063 rows=30343) (actual time=0.152..104 rows=30866 loops=1)
-> Index range scan on Products using ProductFeature over (ProductFeature = 1) (cost=9.51 rows=60686) (actual time=0.0332..11 rows=34832 loops=1)
-> Index range scan on Products using ProductActive over (ProductActive = 1) (cost=19.1 rows=123582) (actual time=0.117..78.8 rows=233603 loops=1)
< /code>
EXPLAIN ANALYZE
SELECT COUNT(ProductID) AS ProductCount
FROM Products
WHERE ProductActive = 1
AND (ProductFeature = 1 OR ProductFeature = 2);

-> Aggregate: count(Products.ProductID) (cost=12860 rows=1) (actual time=791..791 rows=1 loops=1)
-> Filter: ((Products.ProductFeature = 1) or (Products.ProductFeature = 2)) (cost=9576 rows=32842) (actual time=0.119..789 rows=35322 loops=1)
-> Index lookup on Products using ProductActive (ProductActive=1) (cost=9576 rows=123582) (actual time=0.118..768 rows=233635 loops=1)
< /code>
EXPLAIN ANALYZE
SELECT COUNT(ProductID) AS ProductCount
FROM Products
WHERE ProductActive = 1
AND ProductAdult IN(1,2)

-> Aggregate: count(Products.ProductID) (cost=12860 rows=1) (actual time=879..879 rows=1 loops=1)
-> Filter: (Products.ProductAdult in (1,2)) (cost=9575 rows=32842) (actual time=0.0717..876 rows=35323 loops=1)
-> Index lookup on Products using ProductActive (ProductActive=1) (cost=9575 rows=123586) (actual time=0.0707..860 rows=233641 loops=1)
< /code>
These fields are indexed...
PRIMARY KEY ProductID
KEY ProductActive
KEY ProductFeature
< /code>
Almost a second on 261,045 records? Have to get this thing running faster!

Подробнее здесь: https://stackoverflow.com/questions/796 ... d-on-index
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»