问题确实出在 or 这个条件上,造成数据返回过大卡住的现象,但是如果非要有or这个条件的话可以改成这样:
select a.* from table1 a, table2 b where a.tid = b.id and a.state = 1
union all
select * from table1 where tid = 0 and state = 1
你这条语句相当於,这样的结果集是不是很大
select a.* from table1 a, table2 b where a.tid = b.id or (a.tid = 0 and a.state = 1)
如果不加括号,优先级是 not > and > or
你加了OR那前面那句a.tid = b.id 意义就不打了,
结果集就是笛卡尔积....
得这样改
select a.* from table1 a, table2 b where a.tid = b.id and (r a.tid = 0 or a.state = 1);
select a.* from table1 a, table2 b where a.tid = b.id or (a.tid = 0 and a.state = 1);这样试试
是不是数据量太大?如果这样可以建个索引试试,貌似没什么语法问题。