回 帖 发 新 帖 刷新版面

主题:sql优化

三个表
calss :
id, cnname,parentid,sortid

product:
id,name,classid,boss,......

shop:
id,username,grade,.....

其中表product中classid字段值形式为:-0-12-87-

现要关联三个表:
(下面是现在用的代码,但因三个表中数据都是几千已上,运行起来相当的慢,所以希望那位能帮忙优化下)
sql="select class.id,class.cnname,class.sortid from class,product,shop where product.classid like '%-'+convert(varchar(255),class.id)+'-%'  and product.boss=shop.username  and shop.grade>1   and class.parentid="&id&" Group By class.id,class.cnname,class.sortid order by class.sortid"

回复列表 (共2个回复)

沙发

需要对数据库结构做优化,增加冗余字段

这个 like '%-'+convert(varchar(255),class.id)+'-%' 对字符串的LIKE很费时间
这个product.boss=shop.username  对字符串的比较也费时间

板凳

三个表
calss :
id, cnname,parentid,sortid

product:
id,name,classid[b],ClassIdEx[/b],boss,[b]BossID[/b]......

shop:
id,username,grade,.....
 
Product表里面的ClassIDEx用来存储:-0-12-87- 中的 0或者12或者87
Product表里面的BossID用来存储shop里面的id

我来回复

您尚未登录,请登录后再回复。点此登录或注册