отображать данные, связанные с первичным ключом - PullRequest
0 голосов
/ 21 февраля 2011

У меня есть таблица со следующими столбцами: row_id, customer_id, worker_id, vehicle_id, task_id, subcontractor_id.

Мне нужно получить следующие данные: row_id, customer_name, имя_работника, имя_транспортного средства, task_serial, имя субподрядчика

Я могу сделать это, используя простые внутренние объединения для каждой таблицы (Клиенты, Рабочие и т. Д.). Но каждая таблица действительно огромна (много строк и каждая строка имеет много полей), и я знаю, что * _id (customer_id,worker_id, ..) является первичным ключом его таблицы.

Есть ли способ, которым я могу получить эти данные и избежать многих внутренних объединений?

(возможно что-то с внешним ключом, первичным ключом)или как то так ..)

спасибо

1 Ответ

1 голос
/ 21 февраля 2011

Я думаю, вам придется использовать объединения - и это совсем не плохо.

Если столбцы * _id проиндексированы (и обычно индексируются первичные ключи), не имеет значения, что таблицы объединения огромны, поскольку обработчик запросов будет использовать индекс для поиска правильных строк в таблицах объединения - а не делать полное сканирование таблицы. «Много столбцов» также не должно быть проблемой для вашего процессора запросов ...

Так что я думаю, что запрос будет выглядеть примерно так:

SELECT a.row_id, customer_name, worker_name, vehicle_name, task_serial, subcontractor_name 
FROM my_table as a
INNER JOIN CUSOMER as b ON a.customer_id = b.customer_id
INNER JOIN WORKER as c ON a.worker_id = c.worker_id
...

Конечно, вы можете использовать и левые коины.

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