查询中对In 关键字的处理,请指教

[复制链接]
查看11 | 回复8 | 2008-2-13 12:43:03 | 显示全部楼层 |阅读模式
类似下面的语句
select code from tabA where ID in ('11,22,33')
'11,22,33'是一个预先取出的字符串,可能有很多,所以以上面方式查询时候很慢,
针对上面这个模式,各位大侠帮助看看如何能调整优化。
回复

使用道具 举报

千问 | 2008-2-13 12:43:03 | 显示全部楼层
最初由 龙勉 发布
[B]类似下面的语句
select code from tabA where ID in ('11,22,33')
'11,22,33'是一个预先取出的字符串,可能有很多,所以以上面方式查询时候很慢,
针对上面这个模式,各位大侠帮助看看如何能调整优化。 [/B]

建一个索引应该有效果。
回复

使用道具 举报

千问 | 2008-2-13 12:43:03 | 显示全部楼层
这个语法看起来是错误的。
回复

使用道具 举报

千问 | 2008-2-13 12:43:03 | 显示全部楼层
是啊,如果优化用exists 代替in
回复

使用道具 举报

千问 | 2008-2-13 12:43:03 | 显示全部楼层
('11,22,33')
改为
('11','22','33')
这种穷举不需要exists 代替in优化
直接在ID 建个索引就可以了
回复

使用道具 举报

千问 | 2008-2-13 12:43:03 | 显示全部楼层
對ID建index 比較好一點...
回复

使用道具 举报

千问 | 2008-2-13 12:43:03 | 显示全部楼层
最初由 wlidflower 发布
[B]('11,22,33')
改为
('11','22','33')
这种穷举不需要exists 代替in优化
直接在ID 建个索引就可以了 [/B]


就是
回复

使用道具 举报

千问 | 2008-2-13 12:43:03 | 显示全部楼层
最初由 龙勉 发布
[B]类似下面的语句
select code from tabA where ID in ('11,22,33')
'11,22,33'是一个预先取出的字符串,可能有很多,所以以上面方式查询时候很慢,
针对上面这个模式,各位大侠帮助看看如何能调整优化。 [/B]

如你所说,看你写的SQL可以似乎‘11,22,33’是一个字符串,而并不是三个字符串,如果真是这样只在用=就可以啦,select code from tabA where ID='11,22,33'
但我想可能这不是你所需要的。也许你的ID 是11,22和33所以你可以这样取
select code from tabA where ID IN (11,22,33)

select code from tabA where ID=11 OR where ID=22 OR where ID=33
不必用其它啦!
回复

使用道具 举报

千问 | 2008-2-13 12:43:03 | 显示全部楼层
in()里面的数据应该是从另外一个表中选的吧?如果是这样,首先得优化选取数据的语句,然后再在这个表建索引,这样效果更好一些。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行