oracle有A表、B表,A、B通过AID和BID来关联,查询语句大概可以这么写 select A.f1,B.f2,A.f3 from A,B where A.AID=B.BID,假如A表有200w条记录,B表有300条记录,那么为了提高查询速度,建立索引,这两个表的外键都要建吗?还是只建一个?如果建一个的话?建哪个表的呢?

解决方案 »

  1.   

    外键都要建索引是什么意思?在 A表的AID和B的BID建索引
      

  2.   

    B表只有300条记录,用不着建索引
    A表数据200w,肯定要建索引的。
    你可以看下执行计划,一定要保证大表是走索引的。
      

  3.   

    我觉得,要速度快不该只想着索引。
    把一个表看作一个列表,遍历看作for循环print,索引相当于二分查找。
    模拟程序计算时间复杂度,在各种算法中选最优,然后让执行计划符合你的算法,不符合就加hint。