一件衣服有多种分类,特设计以上关系表格,不知设计是否合理,请大家赐教。
====================
SELECT * FROM Pro WHERE id in (SELECT pid FROM KPC WHERE cid = 4 or cid = 5) SELECT * FROM Pro WHERE EXISTS (SELECT pid FROM KPC WHERE KPC.pid = Pro.id and (cid = 4 or cid = 5))
以上两个查询不知那个性能好?望大家指点,如果有好的设计及好的查询语句望高手帮我写一句,谢谢。
设计是合理的,不过。。。ALL-CLASS也是一对N的吧?
你的两条SQL语句性能都不咋的。
凡是使用了in、exists的语句性能都会很差,非必要,应该尽量避免这样的查询。
你的SQL完全可以写成:
SELECT pro.* FROM Pro inner join kpc on pro.id = kpc.pid where kpc.cid=4 or kpc.cid=5
不错,测试挺快的
连接查询性能 > exists > in 吗???
@小小池: 没比较过exists和in的性能,但它们比连接查询慢是肯定的。
我觉得挺合理的,第二个语句性能好些。不知专家意见如何,期待关注。期待解释!
建议建立brand表 否则后期分类表会很混乱
什么是brand表?
@小小池: 品牌和分类应该没关系的 品牌应该只和产品有联系
好比现在把耐克放到分类表中。 但是以后要分类细化成 耐克鞋子 耐克上衣怎么办呢。