2014-10-30 2 views
0

Я не уверен, что мне нужно создать индекс с несколькими столбцами или индекс для каждого из используемых колонок.Какой индекс я должен создать для этого запроса

Я также не уверен, следует ли использовать DESC или ASC на поле индексной

SELECT * from movie 
where year > 1892 AND year < 2015 AND genre like '%Adventure%' AND genre like '%Comedy%' 
AND genre like '%Mystery%' AND imdbRating > 5.9 AND imdbvotes > 99 AND type = 'movie' 

жанр является varch и выглядит как «блокбастеры, комедии, фильмы ужасов,

+0

'year' и' genre' кажется наиболее очевидным. –

+0

@hd почему они важнее, чем imdbrating и imdbvotes? – code511788465541441

+1

''% Adventure% ''не может извлечь выгоду из индекса FYI. http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html – ceejayoz

ответ

0

Этот вопрос невозможно ответить Что ж. Разумность создания индекса получается из данных, которые мы извлекаем из запроса. Индекс должен быть создан для столбцов таблицы, в запросе которых не используется более 10-15% строк, затем применяется оптимизация. В этом отношении см., Какой из столбцов соответствует этому условию, и создайте на нем индекс.

+0

', в котором запрос не использовал более 10-15% строк', пожалуйста, объясните moremore – code511788465541441

+0

Если у вас есть столбец, например. 1000 строк, и в результате вы получаете выбор из примерно 150 строк, тогда имеет смысл наложить индекс. В противном случае это ускорит ваши запросы – starko

0

При отсутствии дополнительной информации: (год, тип, imdbrating, imdbvotes)