主题:【求助】mysql中2个表2个条件怎么写来做选择? -- 铁手
共:💬22 🌺13
我试了一下,好像UNION的速度并不比单一的SQL慢,特别当满足B.cc=23456的行在整个B表中的比率不大的时候。当然表A对aa,表B对aa和cc都要分别建立索引。
对UNION所选结果的排序也可能在内存中排,如果内存够多的话,可以加大MySQL DB 的 sort_buffer_size的值(/etc/my.cnf)。
你可以用下列语句对比一下:
EXPLAIN
SELECT A.aa,A.bb,A.dd
FROM A
WHERE A.aa=12345
UNION DISTINCT
SELECT A.aa,A.bb,A.dd
FROM A INNER JOIN B ON A.aa=B.aa
WHERE B.cc=23456
ORDER BY aa limit 0, 10
- 相关回复 上下关系8
🙂试一下这个: 1 每日闲谈 字84 2009-12-02 06:34:21
🙂这个看来应该是正解了 铁手 字250 2009-12-03 01:36:50
🙂应该还可以,取决于两个表的大小 1 每日闲谈 字236 2009-12-03 20:46:53
🙂UNION的速度好像并不慢
🙂建议用10万行以上的table来试 gb2312 字35 2009-12-15 03:31:26
🙂why not use union? 文森 字0 2009-12-01 22:04:08
🙂主要是考虑到最后得到结果的排序后取部分 铁手 字243 2009-12-03 01:20:36
🙂关于 UNION 和 ALL 1 gb2312 字202 2009-12-15 03:25:16