order by 本来就是最慢的 adddate如果是int类型还好说一点,
如果是varchar然后长度大一点的,又不是主键,在数据多的时候肯定慢的吐血

解决方案 »

  1.   

    Select id,Member_Account,XL_Name,XL_Type,XL_TypeS,ChuFD_provid1,ChuFD_cityid1,MuJD_provid2,MuJD_cityid2,MuJD_JTDD,XL_XingChengTS,FaTuanDate,BiaoMingJZDate,LxPerson,LxTel,BiaoMingAddress,ShiChang_Price,YouHui_Price,TongHang_Price,FeiYongBH,FeiYongBBH From (Select top 10 xianlu.* From xianlu where Member_Account='"&DID&"') as x where
    not exists(Select 1 From XianLu_Join Where x.id=DXLID and  Sid='"&SID&"' and DID='"&DID&"' )这样看看
      

  2.   

    in不要主要的, order by adddate desc 是慢的关键,但如果不使用就得不到最新的结果,不知道有没有别的方法
      

  3.   

    where 和 order by 后面的字段建立索引,尽量不要 * ,要什么select什么。
      

  4.   

    Set rs=Conn.Execute("Select id,Member_Account,XL_Name,XL_Type,XL_TypeS,ChuFD_provid1,ChuFD_cityid1,MuJD_provid2,MuJD_cityid2,MuJD_JTDD,XL_XingChengTS,FaTuanDate,BiaoMingJZDate,LxPerson,LxTel,BiaoMingAddress,ShiChang_Price,YouHui_Price,TongHang_Price,FeiYongBH,FeiYongBBH From (Select top 20 xianlu.* From xianlu where Member_Account='"&DID&"' order by adddate desc) as x where x.id not in(Select DXLID From XianLu_Join Where Sid='"&SID&"' and DID='"&DID&"')")
        IF rs.Eof or rs.Bof Then
       Response.Write("没有要新插入线路!<br>")
    Else
    Do while not (rs.Eof or rs.Bof)
       Set CRs=Conn.Execute("insert into Xianlu(Member_Account,FA,XL_Name,XL_Type,ChuFD_provid1,lxTel) values('"&Member_Account&"','"&Member_FA&"','"&rs("XL_Name")&"','"&rs("XL_Type")&"','"&rs("ChuFD_provid1")&"','"&Member_Tel&"') Select @@IDENTITY As ID")
               Set CRs = CRs.NextRecordSet()
       ID=CRs.Fields("ID").value
       CRs.Close
       Conn.Execute("insert into Xianlu_join(SID,SXLID,DID,DXLID) values('"&SID&"',"&ID&",'"&DID&"','"&rs("ID")&"')")
       Response.Write("插入:"&rs("XL_Name")&"<br>")
       rs.Movenext
    Loop
    End IF
    rs.Close这个是全的,如果不执行do while里面的语句也不会出现超时的情况,回答楼上的:x.* 因为所有的我都须要,
      

  5.   

    adddate 做个索引 试一下。
    时间用 datetime 8位的不重复的试一 下.