我现在有3个表(a,b,c),各有100W数据,a,b,c都是1V1关系,其中,a_id是b,c的主键,在b,c中的相映外键建立了聚族索引.使用的分页是SELECT TOP n * FROM TABLE WHERE ID NOT IN(SELECT TOP M D_ID FORM TABLE )的方法,现在问题是需求对C表的很多字段做排序,对A表的很多字段做查询.请教如何提高查询效率?
我试着在排序的字段上建非聚族索引,但效果和没见的一样.

解决方案 »

  1.   

    SELECT TOP 10 *
    FROM TestTable
    WHERE (ID >
    (SELECT MAX(id)
    FROM (SELECT TOP 20 id
    FROM TestTable
    ORDER BY id) AS T))
    ORDER BY ID
    你这个呢? 用IN 不好啊~
      

  2.   

    SELECT TOP 10 *
    FROM TestTable
    WHERE (ID >
    (SELECT MAX(id)
    FROM (SELECT TOP 20 id
    FROM TestTable
    ORDER BY id) AS T))
    ORDER BY ID这种方法只有在对ID排序时才有用吧?
    我这是要对很多字段进行排序的.
      

  3.   

    你的sql慢是慢在哪里了?是慢在了a b c表的连接还是慢在数据的查询上阿
      

  4.   

    找到原因的,是用了LEFT JOIN的原因,用了LEFT JOIN 就不能用到后面表的索引了.但是在统计COUNT时会明显提高效率.