我有以下列的表格: row_id,customer_id,worker_id,vehicle_id,task_id,subcontractor_id。
我需要获取以下数据: row_id,customer_name,worker_name,vehicle_name,task_serial,subcontractor_name
我可以使用每个表的简单内连接(Customers,Workers等)来做到这一点但是每个表都非常庞大(很多行,每行有很多字段),我知道* _id(customer_id,worker_id ,..)是其表的主键。
有没有办法可以获取这些数据并避免许多内连接?
(可能是外键,主键或类似的东西......)
感谢
答案 0 :(得分:1)
我认为你将不得不使用连接 - 而且它一点也不差。
如果* _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
...
当然你也可以使用左手。