由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Database版 - 一个SQL写法性能的请教
相关主题
求教个MS SQL的问题SQL combine two columns from two different tables no shared (转载)
请教一个SQL的问题sql high hand please help.
error of importing data from txt file to IBM netezza SQL da (转载)我也问一个sql querry的问题
请问SQL和MySQL的最大的区别是什么呀?SQL question
急问一个关于T-SQL的问题,谢谢MSSQL Power Function
Oracel, My SQL是不是case sensitive?MySQL row selection question
求助:mySQL怎么学习呀问一个Oralce index的问题
我的这句MySQL哪里错了吗?请教一个query in mysql
相关话题的讨论汇总
话题: student话题: table话题: union话题: select话题: id1
进入Database版参与讨论
1 (共1页)
n******1
发帖数: 3756
1
只针对Mysql
一般来说,都会建议将or 转成 union
但是如果情况是我有一千个or
比如
select id,name from student where id = id1 or id = id2 ...(1000个or)
如果转成
select id,name from student where id = id1
union
select id,name from student where id = id2
union
select id,name from student where id = id3
order by id (1000 个union)
这种情况下,哪个更好,id上有key
我觉得是union还是会好点,但是好像实际中感觉上第一种还快一点
遇到这种大量的or 应该怎么处理
B*****g
发帖数: 34098
2
起码也得用union all

【在 n******1 的大作中提到】
: 只针对Mysql
: 一般来说,都会建议将or 转成 union
: 但是如果情况是我有一千个or
: 比如
: select id,name from student where id = id1 or id = id2 ...(1000个or)
: 如果转成
: select id,name from student where id = id1
: union
: select id,name from student where id = id2
: union

n******1
发帖数: 3756
3
但是如果要排重呢

【在 B*****g 的大作中提到】
: 起码也得用union all
B*****g
发帖数: 34098
4
你这哪里来的重

【在 n******1 的大作中提到】
: 但是如果要排重呢
n******1
发帖数: 3756
5
如果是理想情况确实应该不会有,但是我只是举的只是简单例子
我处理的是一些text mining的result,所以还是有可能不同ID,两个row内容有重复的
情况
不过我理解你的建议,谢谢

【在 B*****g 的大作中提到】
: 你这哪里来的重
B*****g
发帖数: 34098
6
其实你就是想问超过1000个不能用in怎么办,oracle里很简单,mysql我会把id存在一
个table里然后join

【在 n******1 的大作中提到】
: 如果是理想情况确实应该不会有,但是我只是举的只是简单例子
: 我处理的是一些text mining的result,所以还是有可能不同ID,两个row内容有重复的
: 情况
: 不过我理解你的建议,谢谢

t****n
发帖数: 10724
7
老师不会教这样的query的,显然两种方法都不好

【在 n******1 的大作中提到】
: 只针对Mysql
: 一般来说,都会建议将or 转成 union
: 但是如果情况是我有一千个or
: 比如
: select id,name from student where id = id1 or id = id2 ...(1000个or)
: 如果转成
: select id,name from student where id = id1
: union
: select id,name from student where id = id2
: union

n******1
发帖数: 3756
8
oracle里面可以怎么做
mysql用join? 没理解

【在 B*****g 的大作中提到】
: 其实你就是想问超过1000个不能用in怎么办,oracle里很简单,mysql我会把id存在一
: 个table里然后join

B*****g
发帖数: 34098
9
create table t(id)
把id1-idxxxx都存进去
然后join student 和 t
for oracle, google "Split comma delimited string"

【在 n******1 的大作中提到】
: oracle里面可以怎么做
: mysql用join? 没理解

n******1
发帖数: 3756
10
真是很不错的思路,感觉你用临时表转换的思路很灵活,上次将列转行也是很巧妙的做法
你说oracle里面很容易是什么意思

【在 B*****g 的大作中提到】
: create table t(id)
: 把id1-idxxxx都存进去
: 然后join student 和 t
: for oracle, google "Split comma delimited string"

相关主题
Oracel, My SQL是不是case sensitive?SQL combine two columns from two different tables no shared (转载)
求助:mySQL怎么学习呀sql high hand please help.
我的这句MySQL哪里错了吗?我也问一个sql querry的问题
进入Database版参与讨论
B*****g
发帖数: 34098
11
oracle sql 能把 delimited string直接转成table

做法

【在 n******1 的大作中提到】
: 真是很不错的思路,感觉你用临时表转换的思路很灵活,上次将列转行也是很巧妙的做法
: 你说oracle里面很容易是什么意思

c*********e
发帖数: 16335
12
select id,name from student where id in ( id1,id2,id3,.....)

【在 n******1 的大作中提到】
: 只针对Mysql
: 一般来说,都会建议将or 转成 union
: 但是如果情况是我有一千个or
: 比如
: select id,name from student where id = id1 or id = id2 ...(1000个or)
: 如果转成
: select id,name from student where id = id1
: union
: select id,name from student where id = id2
: union

B*****g
发帖数: 34098
13
1000个or

【在 c*********e 的大作中提到】
: select id,name from student where id in ( id1,id2,id3,.....)
p*********d
发帖数: 136
14

How to do this, delimited string直接转成table in oracle sql?
Also where is the "1000" limitation specified?

【在 B*****g 的大作中提到】
: oracle sql 能把 delimited string直接转成table
:
: 做法

l********n
发帖数: 200
15
请问MSSQL能否把delimited string直接转成table?

【在 B*****g 的大作中提到】
: oracle sql 能把 delimited string直接转成table
:
: 做法

t****n
发帖数: 10724
16
beijing说说用什么方法?每次碰到列转行用cursor,麻烦死!

做法

【在 n******1 的大作中提到】
: 真是很不错的思路,感觉你用临时表转换的思路很灵活,上次将列转行也是很巧妙的做法
: 你说oracle里面很容易是什么意思

B*****g
发帖数: 34098
17
co-ask

【在 l********n 的大作中提到】
: 请问MSSQL能否把delimited string直接转成table?
B*****g
发帖数: 34098
18
列转行用http://www.oracle.com/technetwork/articles/sql/11g-pivot-097235.html
我说的是string
https://blogs.oracle.com/aramamoo/entry/how_to_split_comma_separated_string_
and_pass_to_in_clause_of_select_statement
https://forums.oracle.com/forums/thread.jspa?threadID=958898

【在 t****n 的大作中提到】
: beijing说说用什么方法?每次碰到列转行用cursor,麻烦死!
:
: 做法

d**********3
发帖数: 1186
19
In term of the two options, OR is better in performance.
But I think you can pass a table variable to a proc, this should be optimal.
d**********3
发帖数: 1186
20
You bet.

【在 l********n 的大作中提到】
: 请问MSSQL能否把delimited string直接转成table?
相关主题
SQL question问一个Oralce index的问题
MSSQL Power Function请教一个query in mysql
MySQL row selection question请教一个mysql 排序问题。
进入Database版参与讨论
c*********e
发帖数: 16335
21
算法上没区别呀,如果table t有1000行,student table 有m行,那要比较1000m次。

【在 B*****g 的大作中提到】
: create table t(id)
: 把id1-idxxxx都存进去
: 然后join student 和 t
: for oracle, google "Split comma delimited string"

B*****g
发帖数: 34098
22
写法可以zb呀,哈哈

次。

【在 c*********e 的大作中提到】
: 算法上没区别呀,如果table t有1000行,student table 有m行,那要比较1000m次。
n******1
发帖数: 3756
23
不是吧

次。

【在 c*********e 的大作中提到】
: 算法上没区别呀,如果table t有1000行,student table 有m行,那要比较1000m次。
p***c
发帖数: 5202
24
没有直接的方法,我都是自己写了个table function
楼主的这么多or肯定不行,beijing说的建个temp table或者table variable(MSSQL)
然后join是正道

【在 l********n 的大作中提到】
: 请问MSSQL能否把delimited string直接转成table?
1 (共1页)
进入Database版参与讨论
相关主题
请教一个query in mysql急问一个关于T-SQL的问题,谢谢
请教一个mysql 排序问题。Oracel, My SQL是不是case sensitive?
弱问 mysql 的 sql求助:mySQL怎么学习呀
mysql 问题 (转载)我的这句MySQL哪里错了吗?
求教个MS SQL的问题SQL combine two columns from two different tables no shared (转载)
请教一个SQL的问题sql high hand please help.
error of importing data from txt file to IBM netezza SQL da (转载)我也问一个sql querry的问题
请问SQL和MySQL的最大的区别是什么呀?SQL question
相关话题的讨论汇总
话题: student话题: table话题: union话题: select话题: id1