|
数据表的仨个字段:
`status` enum('normal','delete') NOT NULL default 'normal',
`visible` enum('public','private','friends') NOT NULL default 'public'
`share` tinyint(1) unsigned NOT NULL default '0',
share=1时,visible肯定等于public
我想查询status等于normal并且visible等于private、friends、public三者之一,但若visible等于public这时share必须等于1
这个条件应该怎么构造使查询效率更好呢?
WHERE (visible!='public' OR share=1) AND status='normal'
WHERE (visible in('private','friends') OR share=1) AND status='normal'
WHERE (visible='private' OR visible='friends' OR share=1) AND status='normal'
条件语句有错吗?有更好的条件查询吗?感激不尽!
PS:目的是不读取visible="public" AND share=0的记录,其他全部读取。其中share=0的记录占全部记录的80%左右
[ 本帖最后由 hnmazda 于 2008-10-31 14:00 编辑 ] |
|