помогите сделать SQL-запрос эффективным в MySql - PullRequest
0 голосов
/ 25 марта 2011

У меня 30 таблиц, каждая из которых представляет разные окрестности. Каждая таблица содержит перечень недвижимости с колонками «Цена», «Количество комнат», «Квадратные футы» и т. Д.

Конечный пользователь сможет выбрать столько районов, сколько ему нравится, с помощью возможность отфильтровывать результаты, такие как «Как минимум 5 комнат», «ниже 250 тыс.» и т. д., и отсортировав результаты по «Самая низкая цена», «Время отправлено», вы получите точку.

Теперь я программист, а не парень СУБД. Я выполняю поиск в Интернете, но чувствую, что попытка создать запрос по одному шагу за раз была бы неправильным подходом без каких-либо указаний о том, чего следует избегать.

Мне бы очень хотелось услышать и узнать от сообщества StackOverflow о лучших подходах к этому. Пожалуйста, помогите мне разобраться в этом.

РЕДАКТИРОВАТЬ: в настоящее время я использую MyISAM

Ответы [ 3 ]

3 голосов
/ 25 марта 2011

У вас не должно быть 30 столов. Нормализуйте свою схему:

СОСЕДСТВО
ID, Имя

СОБСТВЕННОСТЬ
ID, NeighborhoodID, Имя, Цена, Номера, SquareFeet

Тогда вы можете присоединиться к ним вместе:

SELECT n.Name AS Neighborhood, p.Name AS Property, Price, Rooms, SquareFeet
FROM Property AS p
INNER JOIN Neighborhood AS n ON h.NeighborhoodID = p.ID
WHERE p.NeighborhoodID = X

Тогда вам могут понадобиться индексы для таблиц по мере роста данных.

0 голосов
/ 25 марта 2011

Лучший способ - изменить модель БД, избавиться от 30 таблиц и поместить все в одну таблицу. В вашей текущей модели я не вижу других путей, кроме создания огромного объединения (вы можете поместить его в представление и запросить это представление).

0 голосов
/ 25 марта 2011

Вы должны начать изменять модель базы данных.Создание 30 таблиц для хранения одних и тех же данных (информация о реальном состоянии) не подходит.Попробуйте поместить все данные в одну таблицу, добавив столбец, указывающий окрестности.Этот район может указывать на другую таблицу с названием, описанием, ... района.Затем вы можете запросить одну таблицу для поиска по всем окрестностям и, при желании, отфильтровать окрестности, которые пользователь хочет найти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...