2010-05-25 3 views
1

У нас есть таблица MySQL, в которой строки никогда не обновляются, но вместо нее добавляются новые строки, а старые - устаревшие. Think Rails 'acts_as_paranoid, но для каждого обновления.Использование индексов в режиме просмотра MySQL

Чтобы работать с Rails, мы имеем представление, которое выбирает только строки, которые являются «текущими». Это делает намного лучшую «таблицу» для нашей модели ActiveRecord.

Ловушка: наши индексы больше не используются.

Запросы на представление не используют индексы базовых таблиц. Вы не можете добавить индекс в представление. Без индексов приложение невыносимо медленное.

Единственное решение, с которым мы столкнулись, - это построить материализованное представление, но это боль в MySQL, потому что они не поддерживаются изначально.

Есть ли лучший способ сделать это?

+0

Пожалуйста, покажите нам вид и запрос. –

ответ

0

Поскольку MySQL выполняет запрос, лежащий в основе представления, он все равно должен использовать индексы в запросе, который составляет представление. Сделайте объяснение по запросу, которое вы использовали для создания представления и публикации здесь, если оно не индексируется.

+0

Вы правы. Это оказалось не просто взглядом. – Peeja

Смежные вопросы