用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3543|回复: 1
收起左侧

[优化] 一个简单的sql优化问题,大家进来show一下自己的看法吧。

[复制链接]
发表于 2009-3-18 17:40:00 | 显示全部楼层 |阅读模式
有三个表:class表,product表,class_product表。
class存产品类别,有id,name两个字段。(id是主键)
product存产品,有id,name两个字段(每个产品可能属于不同的类别,比如 饮料这个产品可以属于液体类,也可以属于水类,呵呵,举例可能不确切。) (id是主键)
class_product表有id,class_id,product_id三个字段,用来确定产品和类的关系。
现在我要做的是:(class_id是独立索引,product_id是独立索引)
根据一个类的id=102,去检索全部的产品。
可以这样写:(join连接)
select product.* from product join class_product on class_product.product_id=product.id where class_product.class_id = 102;
也可以这样写:(对等连接)
select select product.* from product ,class_product where product.id=class_product.product_id and class_product.class_id=102;
另外还有左右连接,大家觉得怎么写可以效率更高呢,包括如何正确建立索引?请提交下你的sql,一起研究下吧。
发表于 2009-3-18 18:11:39 | 显示全部楼层
我用我的数据库测试了一下, 结果如下:
表 coordonnees_par 对应你的product
表 lien_pro_par 对应你的class_product

SELECT c.nom_par
FROM `lien_pro_par` l, `coordonnees_par` c
WHERE `id_pro` =17
and c.id_par = l.id_par

25 total, Traitement en 0.0011 sec

SELECT c.nom_par
FROM `coordonnees_par` c join `lien_pro_par` l on c.id_par = l.id_par WHERE `id_pro` =17

(25 total, Traitement en 0.0009 sec.)

本版积分规则