Active Record Query/SQL присоединяется к низкой производительности

Я работаю над запросом Active Record и пытаюсь найти способ максимально эффективно извлекать записи.

4 стола

Рестораны, Сотрудники, Район, Предметы

Я хочу захватить все рестораны, где

‘Employees.salary > ?, 15'
‘District.name = ?, Bay_Area’
‘Items.avg_return > ?, 10’
.uniq

В настоящее время я использую соединения для сотрудников, округов и предметов, но мне кажется, что это неэффективно. как я могу сделать это максимально эффективно? Принимаются решения Active Record или SQL!


person Frank    schedule 18.09.2015    source источник
comment
Как выглядят ваши индексы и какова связь между каждой моделью?   -  person rovermicrover    schedule 18.09.2015
comment
Пожалуйста, добавьте соответствующие индексы и фактический код присоединения, который вы используете.   -  person eirikir    schedule 19.09.2015


Ответы (1)


Пока таблицы и объединения хорошо определены, и в вашем списке не намного больше, чем все рестораны в Европе, время запроса должно быть очень хорошим. Четыре объединения — это немного, если все сделано правильно.

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

Позвольте MySQL выполнить поиск.

person flaschenpost    schedule 18.09.2015