neversaylate 发表于 2009-3-18 17:40:00

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

有三个表: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,一起研究下吧。

moorland 发表于 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.)
页: [1]
查看完整版本: 一个简单的sql优化问题,大家进来show一下自己的看法吧。