1

Если у меня есть следующий запрос, какие индексы могут быть созданы для его ускорения?Какие индексы должны быть созданы для этого запроса MySQL

SELECT `residentials`.* 
FROM `residentials` 
WHERE 
    (is_active = 1) AND 
    (
    (created_at > '2012-02-20 20:51:56' OR modified > '2012-02-20 20:51:56') AND 
    list_price >= 229000 AND 
    list_price <= 311000 AND 
    square_feet >= '1223' AND 
    square_feet <= '1654' AND 
    property_type IN ('commercial','condo','detached','house','multi','rowtownhouse','semidetached') AND 
    (zip LIKE '%19147%') 
) 
ORDER BY list_price DESC 

FYI, этот запрос генерируется с помощью Rails, так что я не полный контроль над тем, как она построена.

Использование EXPLAIN дает следующее:

ID = 1

SELECT_TYPE = SIMPLE

стол = Жилая

Тип = диапазон

possible_keys = index_residentials_on_list_price, index_residentials_on_property_style, index_residentials_on_square_feet, index_residentials_on_modified, index_residentials_ on_is_active, index_residentials_on_is_active_and_board_id, index_residentials_is_active_board_id_list_price_property_type, index_residentials_on_is_active_and_created_at_and_modified, dates_and_type, dates_type_price, board_price_type_zip, board_price_type_zip_mls

ключ = index_residentials_on_list_price

key_len = 6

исх = NULL

строки = 209272

Экстра = Использование где

+0

Пару внушения скорости (с помощью EXPLAIN, как показано ниже, чтобы увидеть, что помогает) - попробуйте использовать BETWEEN для условий> и <. Также zip 'LIKE' будет очень тяжелым. Я бы попробовал запрос с ним и без него и с индексом/без индекса на zip. –

ответ

2

Пробовали ли вы:

EXPLAIN SELECT `residentials`.* 
FROM `residentials` 
WHERE 
    (is_active = 1) AND 
    (
    (created_at > '2012-02-20 20:51:56' OR 
    modified > '2012-02-20 20:51:56') AND 
    list_price >= 229000 AND 
    list_price <= 311000 AND 
    square_feet >= '1223' AND 
    square_feet <= '1654' AND 
    property_type IN ('commercial','condo','detached','house','multi','rowtownhouse','semidetached') AND 
    (zip LIKE '%19147%') 
) 
ORDER BY list_price DESC 
+0

+1 да, сделайте это, объясните (план), созданный именно для этой цели. Я все еще застрял, пожалуйста, опубликуйте результаты. В противном случае все другие предложения, которые вы видите, будут колоть в темноте. –

+0

Я добавил результаты EXPLAIN выше, если это помогает – kidbrax

0

Порядок столбцов действительно важных для индексов, попробуйте:

is_active, created_at, modified, list_price, square_feet, property_type 
Смежные вопросы