ben*_*nck 0 mysql performance select subquery where-clause
我在这里尝试了解决方案,但它不起作用.
我的桌子是这样的:
`Index` uid dept
...........................
1 001 dept1
2 001 dept2
3 001 dept3
4 002 dept2
5 002 dept3
6 002 dept4
7 003 dept1
8 003 dept5
9 004 dept1
10 004 dept6
Run Code Online (Sandbox Code Playgroud)
我想要检索具有特定的所有行dept.也就是说,如果我想要检索dept1,我想检索除uid = 002之外的所有行,因为dept1uid = 002 没有.
即使使用索引,查询字符串也很慢:
SELECT id FROM table WHERE uid IN
(SELECT uid WHERE dept='dept1')
Run Code Online (Sandbox Code Playgroud)
我之前没有使用WHERE IN的版本如下:
首先使用dept = dept1检索所有uid.
然后对第一个查询中检索到的所有uid使用for循环.
对于在第一个查询中检索的少量(100)行,此方法非常快.但是,它似乎不是一个好的解决方案,因为它会产生大量的查询(每个查询都非常快).
试试这个:
select a.id from Table1 a
inner join Table1 b on a.uid = b.uid and b.dept = 'dept1';
Run Code Online (Sandbox Code Playgroud)
演示:http://sqlfiddle.com/#!2/05774/4
| 归档时间: |
|
| 查看次数: |
6387 次 |
| 最近记录: |