1:
name varchar 查询条件 name in('char1','char2','char3'..[大概情况2-6个char]) 这种情况 是用 name in 查询快 还是用 name='char1' or name='char2'...快2id pk 查询条件 id in(int1,int2,int3...)int有[1-10个] 这种情况 是用 id in 查询快 还是用 id=int1 or id=int2...快 ?int有[10+个] 这种情况 是用 id in 查询快 还是用 id=int1 or id=int2...快 ?
name varchar 查询条件 name in('char1','char2','char3'..[大概情况2-6个char]) 这种情况 是用 name in 查询快 还是用 name='char1' or name='char2'...快2id pk 查询条件 id in(int1,int2,int3...)int有[1-10个] 这种情况 是用 id in 查询快 还是用 id=int1 or id=int2...快 ?int有[10+个] 这种情况 是用 id in 查询快 还是用 id=int1 or id=int2...快 ?
2、如在NAME上建立索引,
用
name='char1'
UNION
name='char2'
速度最快。
意思是不是用
1. select * from table where name='char1' union name='char2' union name='char3'....
2. select * from table where id=int1 union id=int2 union id=int3....
这样的查询最快?
如果查询条件一多,sql语句就太长了吧?效率高?
我个人觉得union效率高, 只是语句长点
如果用union,则可以使用index.具体的情况使用EXPLAIN 查看.
该字段不涉及到查询,id(int pk) ---uid就是直接检索。。
我用程序测试了一下,感觉 in最快。。union最慢!
IN、OR速度是比较慢的。
select name from guangdong where id=2432
union
select name from guangdong where id=4863
union
select name from guangdong where id=7294
union
select name from guangdong where id=9725 .......................
我是这样拼接的!
83760条记录,在BH上索引:
用OR 查询:
SELECT * FROM TT WHERE BH=‘’ OR BH=‘’大约4MS
用
UNION
select * from jzg1 where bh='101068'
union
select * from jzg1 where bh='100800'
0MS结果即出来
直接在MySQL执行完后,直接会告诉你用了多少时间啊。 不过第二条执行的有时会沾一点光。
不会吧?
dos下面最多就精确到 0.01sec!!