有三张表,c1,c2,c3,都只有一个字段,分别为a1,a2,a3
当a1,a2,a3没有索引的时候
select a1,a2,a3 from c1,c2,c3 a1=a2 and a2=a3
先组装c1,c2,c3,成型一个临时表,如各自有1000条数据,就是1000*1000*1000条记录的临时表当a1,a2,a3有索引时
select a1,a2,a3 from c1,c2,c3 a1=a2 and a2=a3
就不直接组装c1,c2,c3,而是把c1的第一条记录取出,应用a2,a3的索引查询,这样就避免了形成庞大的临时表是这样理解得么?
当a1,a2,a3没有索引的时候
select a1,a2,a3 from c1,c2,c3 a1=a2 and a2=a3
先组装c1,c2,c3,成型一个临时表,如各自有1000条数据,就是1000*1000*1000条记录的临时表当a1,a2,a3有索引时
select a1,a2,a3 from c1,c2,c3 a1=a2 and a2=a3
就不直接组装c1,c2,c3,而是把c1的第一条记录取出,应用a2,a3的索引查询,这样就避免了形成庞大的临时表是这样理解得么?
先说语句,要加where
其实我想知道的是,在交叉查询时,是先组装成临时表后,再对临时表进行where筛选;还是
从主表中取一条就where筛选一次,再取下一条。
谢谢了。
(8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list>
(1) FROM <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(6) WITH {CUBE | ROLLUP}
(7) HAVING <having_condition>
(10) ORDER BY <order_by_list> 索引與查詢結果無關,至於查詢速度有關