解决方案 »

  1.   

    -- 预处理:去重复,建索引
    SELECT DISTINCT 起点,终点
      INTO T
      FROM A;TRUNCATE TABLE A;CREATE UNIQUE CLUSTERED INDEX PK_A
        ON A(起点,终点);INSERT INTO A
    SELECT *
      FROM T
     ORDER BY 起点,终点;DROP TABLE TCREATE UNIQUE CLUSTERED INDEX IDX_B
        ON B(点编号);-- 查询
    SELECT A.起点, B1.X坐标,B1.Y坐标,
           A.终点, B2.X坐标,B2.Y坐标
      FROM A
      JOIN B B1 ON B1.点编号 = A.起点
      JOIN B B2 ON B2.点编号 = A.终点
      

  2.   

    看下来,第二张表是主数据表,可以放到缓存中。通过程序构造你要的结构。这样可免去sql join之苦如果单从SQL上优化,数据量不大。那就要建合适的索引了。