有两个表A,B
A里有字段(KEY1,KEY2,A1,A2,A3,A4,A5)
B里有字段(KEY1,KEY2,B1,B2,B3,B4,B5)A里有索引 IND1(KEY1,KEY2)
B里有索引 IND1(KEY1,KEY2)A表里有100万条记录
B表里有300万条记录我现在用这条语句为什么执行起来要6分钟多select A.KEY1,A.KEY2,A.A1,A.A2,B.B1,B.B2,B.B3 from A left join B on A.KEY1=B.KEY1 and  A.KEY2=B.KEY2怎么优化也优化不了,郁闷西,分不够再加

解决方案 »

  1.   

    select   A.KEY1,A.KEY2,A.A1,A.A2,B.B1,B.B2,B.B3   from   A ,b  where A.KEY1=B.KEY1   and     A.KEY2=B.KEY2 
      

  2.   

    聚集索引你要显示100万条数据干什么,添加一些条件,top 20什么的
      

  3.   

    问题不在 SQL 语句,试试分页查询:
        Dim rs As ADODB.Recordset
        Dim cn As ADODB.Connection
        
        Set cn = New ADODB.Connection
        cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
            ";Data Source=你的数据库.mdb"
        Set rs = New ADODB.Recordset
        With rs
            .CursorLocation = adUseClient
            .Open "select A.KEY1,A.KEY2,A.A1,A.A2,B.B1,B.B2,B.B3 from A left join B on A.KEY1=B.KEY1 and A.KEY2=B.KEY2 ", cn, adOpenKeyset, adLockOptimistic
            .PageSize = 10
            iPageCount = .PageCount
            iRecords = .PageSize
        End With
      

  4.   

    分页显示??一般的就是查全部的东西
    select A.KEY1,A.KEY2,A.A1,A.A2,B.B1,B.B2,B.B3 from A left join B on A.KEY1=B.KEY1 and A.KEY2=B.KEY2 
    group by A.A1,A.A2
      

  5.   

    执行分析看了下,B表里的索引就站了60%
    我改了下建了一个新的索引,KEY1,KEY2,B1,B2,B3 ,可是再分析下还是用老的索引,郁闷啊