SELECT L.optime,L.operater,L.program,L.storecd,L.macid,L.mobileip,T.storecd
    FROM  LogOperates_201207 AS L
    JOIN mst_ipaddress AS T
          ON L.mobileip = T.mobileip我有2个表,LogOperates_201207,mst_ipaddress 
其中LogOperates_201207表中有近2千万条数据,mst_ipaddress 中有700条数据,
我想利用mobileip字段,ON L.mobileip = T.mobileip 将符合条件的数据取出来,
其中mobileip为索引,但是却足足花了1分钟时间才把匹配的数据取出来,大家有没有更好的方式
利用最短的时间把数据取出啦呢
我想改善一下速度,能更快的取出数据
希望大侠们帮忙

解决方案 »

  1.   

    mobileip 在两个表均有索引 
      

  2.   


    --给mobileip字段加上索引
    --然后测试一下
    SELECT 
    L.optime,L.operater,L.program,L.storecd,L.macid,L.mobileip,T.storecd
    FROM LogOperates_201207 AS L
    JOIN mst_ipaddress AS T ON L.mobileip = T.mobileip
    where L.mobileip is not null
      

  3.   


    --右边数据少,在有索引的情况下,右连接应该比较快一点
    --#2代码有误,请无视
    select 
        L.optime,L.operater,L.program,L.storecd,L.macid,L.mobileip,T.storecd
    from LogOperates_201207 L
    right join mst_ipaddress T on L.mobileip = T.mobileip
      

  4.   

    加上right也是一样的,速度没有什么改善, 
    我感觉主要是  LogOperates_201207
    左边的数据量太大了,
    其实我是想实现这样的功能的根据mst_ipaddress中的mobileip 去抽出LogOperates_201207 相符合的数据的一条
    (`用mst_ipaddress中的mobileip 去抽出LogOperates_201207的时候有很多条)
    这一条数据的条件就是  根据时间 optime  去获取最近一天的值。这个可以根据mst_ipaddress的 值去循环 取LogOperates_201207 的值,
    就是用游标。但是LogOperates_201207 的值太大,游标太慢大家还有什么方法去取相符合的数据的呢,不用游标,要速度快的方法