or 跟 and 在执行数据查询的时候,到底是按照什么方式查询的?
比如。select * from table where a=1 and b=2;它是先在表中找a=1的记录,然后在a=1的记录中再寻找b=2的记录?还是先找b=2再找a=1的?
select * from table where a=1 or b=1;呢?
我有一个查询select * from table where a like '".$keyword."' or b like '".$keyword."';
我想模糊查询$keyword 在a字段或b字段出现的记录、
测试了下,用or查询到了全部记录 ,用and却查询到了……这是神马意思?and不是且么?
比如。select * from table where a=1 and b=2;它是先在表中找a=1的记录,然后在a=1的记录中再寻找b=2的记录?还是先找b=2再找a=1的?
select * from table where a=1 or b=1;呢?
我有一个查询select * from table where a like '".$keyword."' or b like '".$keyword."';
我想模糊查询$keyword 在a字段或b字段出现的记录、
测试了下,用or查询到了全部记录 ,用and却查询到了……这是神马意思?and不是且么?
另:版主老大的话你要听,不然你懂的。
1.select * from table where a=1 and b=2;和
select * from table where b=2 and a=1;的执行时间是否相同,在数据库内部,是先执行a=1查询,还是b=2查询?又或者全表同时查询a=1 and b=2、?
or的情况呢?
2.and 跟or 的用法我知道、刚才程序少写了一个字母,$keyword写成$keywor了。所以产生一点 疑惑、、
这也只是我的猜测。如果你是实现富裕的话,可以看看MYSQL的参考手册。后面几章有关于这方面的文档。http://dev.mysql.com/doc/refman/5.1/zh/index.html
于是.select * from table where a=1 and b=2还是select * from table where b=2 and a=1
的执行效率问题,要看a=1和b=2的记录数。记录数少的放在前面,操作时间长的放在后面(如连接运算)、
or的话,按照我的想法 应该是执行时间一样的。但是不知道从哪隐约记得看过的资料上说,or也是有区别的……
ps:大家可以 一起讨论、如果你觉得我的这个问题幼稚,没有意义,您可以选择无视我,或者在心里鄙视我、
但是,请不要把鄙视,说出来。
我承认我是菜鸟,没有你们这些已经工作了的老前辈水平高、我只是个还在学校为期末考试的奔波的人。但是,你不能否认,我有一颗不懂就问的心……这样有错么?
绝对没有鄙视的意思。
其实and 和or就是运算符。。
当然也符合一般运算符的执行顺序(从左到右)。