我正在处理一个过于宽松和复杂的旧结构和糟糕的设计数据库。可悲的是,我必须这样做。 :(
旧方法用我的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秒。
问题是你可以建议我更快地处理这些线路的最佳方法。
答案 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)
首先,我可以看到这里发生的冗余。由于*会从所有表中选择所有内容,因此您仍然会再次选择其中一些列。尝试从这些表中仅选择所需的列。