索引问题

starfly578 2010-02-10 09:41:14
有三张表,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的索引查询,这样就避免了形成庞大的临时表

是这样理解得么?
...全文
47 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
starseeker7 2010-02-10
  • 打赏
  • 举报
回复
SQL執行順序
(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>

索引與查詢結果無關,至於查詢速度有關
renadg 2010-02-10
  • 打赏
  • 举报
回复
这是后台执行的问题,我觉得只要知道哪个速度更快就行!
starfly578 2010-02-10
  • 打赏
  • 举报
回复
引用 1 楼 fwacky 的回复:
select a1,a2,a3 from c1,c2,c3 where a1=a2 and a2=a3
先说语句,要加where

哈哈,我错了!
其实我想知道的是,在交叉查询时,是先组装成临时表后,再对临时表进行where筛选;还是
从主表中取一条就where筛选一次,再取下一条。
谢谢了。
fwacky 2010-02-10
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20091128/11/b49c0bfc-eb52-4dd5-ba05-f079b6e990a5.html
东那个升 2010-02-10
  • 打赏
  • 举报
回复
索引只是提高了查询的速度。
fwacky 2010-02-10
  • 打赏
  • 举报
回复
select a1,a2,a3 from c1,c2,c3 where a1=a2 and a2=a3
先说语句,要加where

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧