t2是远程表是吧,给t2表建个索引,在t2所在的服务器上:create index idx_t2_no on t2(no,id)这样应该会快多了

解决方案 »

  1.   

    另外,如果你的t2表,数据变化很小,那么可以考虑把t2表的数据,先导入到本地的一个表,然后再查询。其实一般这种情况,之所以慢,主要的原因是网速慢,t2表的数据,需要从远程加载到本地
      

  2.   

    select * into #t
    from t2 select t1.* ,t2.no from t1 left join #t t2 on t1.id=t2.id COLLATE database_default 
    试试这样
      

  3.   

    查询语句需要变化吗不需要变化。你试试能不能快。
    没什么变化,还是很慢如果是数据变化不大,只能是这样了,但是得修改语句,不过这个整体的速度,应该也快不了:if object_id('tempdb..#t2') is not null
      drop table #t2select * into #t2
    from 远程的t2select t1.* ,t2.no from t1 left join #t2 t2 on t1.id=t2.id COLLATE database_default 
      

  4.   

    查询语句需要变化吗不需要变化。你试试能不能快。
    没什么变化,还是很慢如果是数据变化不大,只能是这样了,但是得修改语句,不过这个整体的速度,应该也快不了:if object_id('tempdb..#t2') is not null
      drop table #t2select * into #t2
    from 远程的t2select t1.* ,t2.no from t1 left join #t2 t2 on t1.id=t2.id COLLATE database_default 
    这样确实快了,但是如果鞋写在视图里面
    ALTER view [dbo].[NewVS]
    as 
    select * into #t
    from t2 select t1.* ,t2.no from t1 left join #t t2 on t1.id=t2.id COLLATE database_default 
    go
    这样会报错啊
      

  5.   

    查询语句需要变化吗不需要变化。你试试能不能快。
    没什么变化,还是很慢如果是数据变化不大,只能是这样了,但是得修改语句,不过这个整体的速度,应该也快不了:if object_id('tempdb..#t2') is not null
      drop table #t2select * into #t2
    from 远程的t2select t1.* ,t2.no from t1 left join #t2 t2 on t1.id=t2.id COLLATE database_default 
    这样确实快了,但是如果鞋写在视图里面
    ALTER view [dbo].[NewVS]
    as 
    select * into #t
    from t2 select t1.* ,t2.no from t1 left join #t t2 on t1.id=t2.id COLLATE database_default 
    go
    这样会报错啊这个确实会报错的,因为在试图中是不能有这个:select * into #t
    from t2语句的。
      

  6.   

    into附近语法错误//插入临时表的时候
      

  7.   

    into附近语法错误//插入临时表的时候试试这个:有两个服务器,分别装有两个SQL Server A ,B 
    A,B的表结构a,b 相同 
    A,B分别都会做一些INSERT,UPDATE,DELETE操作,要求AB的数据保持一致 
    (即A新增一条数据,要求B也新增,A更改一条数据,B也更改相应的) 
    是不是可以用触发器来实现 
    那位高手给个例程   
    /* 
    作者:邹建 
    */ /*--同步两个数据库的示例 有数据 
    srv1.库名..author有字段:id,name,phone, 
    srv2.库名..author有字段:id,name,telphone,adress 要求: 
    srv1.库名..author增加记录则srv1.库名..author记录增加 
    srv1.库名..author的phone字段更新,则srv1.库名..author对应字段telphone更新 
    --*/ --大致的处理步骤 
    --1.在 srv1 上创建连接服务器,以便在 srv1 中操作 srv2,实现同步 
    exec sp_addlinkedserver 'srv2','','SQLOLEDB','srv2的sql实例名或ip' 
    exec sp_addlinkedsrvlogin 'srv2','false',null,'用户名','密码' 
    go --2.在 srv1 和 srv2 这两台电脑中,启动 msdtc(分布式事务处理服务),并且设置为自动启动 
    我的电脑--控制面板--管理工具--服务--右键 Distributed Transaction Coordinator--属性--启动--并将启动类型设置为自动启动 
    go 
    --3.实现同步处理 --a.在srv1..author中创建触发器,实现数据即时同步 
    --新增同步 
    create trigger tr_insert_author on author 
    for insert 
    as 
    set xact_abort on 
    insert srv2.库名.dbo.author(id,name,telphone) 
    select id,name,telphone from inserted 
    go --修改同步 
    create trigger tr_update_author on author 
    for update 
    as 
    set xact_abort on 
    update b set name=i.name,telphone=i.telphone 
    from srv2.库名.dbo.author b,inserted i 
    where b.id=i.id 
    go --删除同步 
    create trigger tr_delete_author on author 
    for delete 
    as 
    set xact_abort on 
    delete b 
    from srv2.库名.dbo.author b,deleted d 
    where b.id=d.id 
    g
      

  8.   

    into附近语法错误//插入临时表的时候试试这个:有两个服务器,分别装有两个SQL Server A ,B 
    A,B的表结构a,b 相同 
    A,B分别都会做一些INSERT,UPDATE,DELETE操作,要求AB的数据保持一致 
    (即A新增一条数据,要求B也新增,A更改一条数据,B也更改相应的) 
    是不是可以用触发器来实现 
    那位高手给个例程   
    /* 
    作者:邹建 
    */ /*--同步两个数据库的示例 有数据 
    srv1.库名..author有字段:id,name,phone, 
    srv2.库名..author有字段:id,name,telphone,adress 要求: 
    srv1.库名..author增加记录则srv1.库名..author记录增加 
    srv1.库名..author的phone字段更新,则srv1.库名..author对应字段telphone更新 
    --*/ --大致的处理步骤 
    --1.在 srv1 上创建连接服务器,以便在 srv1 中操作 srv2,实现同步 
    exec sp_addlinkedserver 'srv2','','SQLOLEDB','srv2的sql实例名或ip' 
    exec sp_addlinkedsrvlogin 'srv2','false',null,'用户名','密码' 
    go --2.在 srv1 和 srv2 这两台电脑中,启动 msdtc(分布式事务处理服务),并且设置为自动启动 
    我的电脑--控制面板--管理工具--服务--右键 Distributed Transaction Coordinator--属性--启动--并将启动类型设置为自动启动 
    go 
    --3.实现同步处理 --a.在srv1..author中创建触发器,实现数据即时同步 
    --新增同步 
    create trigger tr_insert_author on author 
    for insert 
    as 
    set xact_abort on 
    insert srv2.库名.dbo.author(id,name,telphone) 
    select id,name,telphone from inserted 
    go --修改同步 
    create trigger tr_update_author on author 
    for update 
    as 
    set xact_abort on 
    update b set name=i.name,telphone=i.telphone 
    from srv2.库名.dbo.author b,inserted i 
    where b.id=i.id 
    go --删除同步 
    create trigger tr_delete_author on author 
    for delete 
    as 
    set xact_abort on 
    delete b 
    from srv2.库名.dbo.author b,deleted d 
    where b.id=d.id 
    g
    收藏啦,