有二个表,
a(aid,name)
b(bid,aid,title,content)有查询语句
select b.bid,a.name,b.title,b.content where a.aid=b.bid;a.aid肯定要建立索引, 那么请问要b.bid要建立索引吗 ?
a(aid,name)
b(bid,aid,title,content)有查询语句
select b.bid,a.name,b.title,b.content where a.aid=b.bid;a.aid肯定要建立索引, 那么请问要b.bid要建立索引吗 ?
对, 是 from a,b where a.aid=b.aid 你说的如果是B是多的那个表, 指的是什么? 不明白, 这样写查询语句, 会同时扫描两个表吗? 还是扫完一个再扫描另一个?
aid, col
1 A1
2 A2
3 A3B
bid,aid,bcol
1 1 B1
2 3 B2
3 2 B3
4 3 B4
5 1 B5这种情况下,让你手工把这些信息组合到一个新的本子上,你会怎么做?
1。 打开B
2。 抄写B的第一行, 1 1 B1
3。 由于A按序排列,直接找到 aid=1 的记录本(使用A的索引),抄写 A1
4。抄写B的下行,循环结束。所以B的上索引根本没用。除非你仅从索引中取记录
大众做法是 where 后面的建立索引, 但等号之后的呢
B(bid,name,title,content) -- 把原先的aid换了name那么查询就可以 SELECT bid,name,title,content FROM B
这样只扫描一个表就够了, 但我看到大部份项目都是像我一楼那么设计的
你是说 select bid,name,title,content from B where name='xxx' 这样用到B的索引吗?
select * from a ,b where a.aid=b.aid and a.name='xxx' ?? 这样B不用索引吧