如何更快地连接多个表

时间:2013-04-25 14:58:05

标签: php mysql inner-join

我正在处理一个过于宽松和复杂的旧结构和糟糕的设计数据库。可悲的是,我必须这样做。 :(

旧方法用我的PHP查询表中的每个信息。然后我用join重新编码。但是出现了一个大问题。它几乎需要一分钟来查询这些信息(有时候更多)。

这是我的代码:

select *, car_db.id as cid, tbl_province.province_name as prov_name,
config_car_color.color_title as clr_title, 
config_car_color.description as clr_desc, 
car_viewer.vwr_id as viewers 
from car_db 
inner join tbl_province on tbl_province.province_code=car_db.prov 
inner join config_car_color on config_car_color.id=car_db.color 
inner join car_viewer on car_viewer.vwr_cid=car_db.id 
where car_db.tid='$_tid'

从此代码的最新查询开始,耗时3.37秒。但通常运行代码至少需要30秒。

问题是你可以建议我更快地处理这些线路的最佳方法。

2 个答案:

答案 0 :(得分:1)

创建以下索引:

car_db (tid)
tbl_province (province_code) -- might be PK
config_car_color (id) -- might be PK
car_viewer (vwr_cid)

答案 1 :(得分:1)

首先,我可以看到这里发生的冗余。由于*会从所有表中选择所有内容,因此您仍然会再次选择其中一些列。尝试从这些表中仅选择所需的列。