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

我的查询语句写得好么,科学么,求鉴定!

[复制链接]
发表于 2010-11-28 11:15:13 | 显示全部楼层 |阅读模式
SELECT cu.uid, cu.nickname, cu.sex, cu.brithyear, cu.resideprovince, cu.residecity, cu.height, ca.pic, cua.content, cua.checka

FROM cndc_user AS cu, cndc_album AS ca, cndc_user_aboutme AS cua

WHERE cu.uid = ca.uid

AND cu.uid = cua.uid

AND cu.sex = $sex
AND cu.brithyear < $maxage
AND cu.brithyear > $minage
AND resideprovince = $province
AND residecity = $city


自我感觉稍显臃肿,试问有没有别的替代办法
发表于 2010-11-28 13:17:04 | 显示全部楼层
先判断,后连接。这个是实现查询优化树的一个简单方法。所以你应该这么写:
where cu.sex = $sex
AND resideprovince = $province
AND residecity = $city
AND cu.brithyear < $maxage
AND cu.brithyear > $minage
and cu.uid = ca.uid
AND cu.uid = cua.uid
坚持的原则是把限制性大的放到最前面,每次尽量取最少的数据。
 楼主| 发表于 2010-11-28 13:47:39 | 显示全部楼层
谢了老白!
发表于 2010-12-2 00:10:23 | 显示全部楼层
建索引,然后最好explain查看一下,想当然有时是错的
发表于 2010-12-24 18:06:06 | 显示全部楼层
学习一下,呵呵

本版积分规则