我有一个表 TABLE_A 现在大概有900多万行数据
orderID type
00001 A
00001 B
00001 C
00002 A
00002 B
00002 B
00003 A
00003 A
00003 A
00004 A
00004 B
00004 B
我要查询type全是A的订单号,我写的下边语句,慢的要死
SELECT DISTINCT (orderID) item_id FROM TABLE_A
WHERE orderID NOT IN (SELECT orderID FROM TABLE_A
WHERE type IN('B', 'C') GROUP BY order_id)
网上说自连的话会很快,我该怎么写,怎么优化~~~~~
2楼的既然group by orderId了就不用distinct
楼主的sql应该是要查询A类型的并且订单ID不在B,C类型的订单吧?
查询type全是A的订单号
[code="sql"]SELECT DISTINCT (orderID) item_id FROM TABLE_A WHERE orderID='A'[/code]
这样不就行了么,为什么还用子查询?
SELECT DISTINCT (orderID) item_id FROM TABLE_A
WHERE type NOT IN('B', 'C') GROUP BY orderID
兄弟IN肯定是不走索引的
最好不要用in才能提高效率
SELECT DISTINCT (orderID) item_id FROM TABLE_A
WHERE orderID='B' or orderID='C' GROUP BY order_id
还有你要把orderID建索,你把这条sql语句放在编辑器里执行一下,保证比我楼上的兄弟的sql语句快.
如果有问题欢迎再次探讨sql优化的问题,祝你好运.