数据库是大量数据
表1 ID    MONEY
表2 ID    NAME
表1 ID=表2 ID需查询 NAME=‘123’和  MONEY>200 AND MONEY<5000的数据
怎么样才能提高查询效率

解决方案 »

  1.   


    select *
    from a,b
    where a.id = b.id and b.name = '123'
        and a.money between 200 and 5000
      

  2.   

    select a.ID, a.MONEY,b.NAME
    from 表1 a join 表2 b
    on a.ID=b.ID and b.NAME=‘123’
    where a.MONEY between 200 and 5000
      

  3.   

    select a.name,b.money from tb1 a inner jion tb2 b on a.id=b.id where name='123' and money>200 and money<5000
      

  4.   

    select *
    from table
    where NAME='123'and money between 200 and 5000
    你这个查询就这么个语句 
    用between比 大小于号 效率高 仅此一点。。可以如期他人建议创建索引
      

  5.   

    已经很简单的语句了,做好索引。
    between and  和大于号 小于号 效率一样的。
    至少从05开始是一样的。
      

  6.   

    不过between and 是指>=和<=,不符合要求啊。
      

  7.   

    #1.从SQL语法上看,基本上已经是最优了。(先过滤name, money,再join)
    #2.对两个表的ID建立聚集索引,对name建立非聚集索引,对money建立非聚集索引
    SELECT a.ID, a.[MONEY], b.NAME
    FROM 表1 a INNER JOIN 表2 b
    ON a.ID = b.ID AND b.NAME = '123' AND (a.[MONEY] > 200 AND a.[MONEY] < 5000)
      

  8.   


    select a.id,a.money,b.name from 表1 a,表2 b
    where a.id = b.id and b.name = '123'
    and a.money>200 and a.money<5000
      

  9.   


    select *
    from 表1 a,
         表2 b
    where a.id = b.id
      and b.name = '123'
      and a.money > 200 
      and a.money < 5000
      

  10.   

    如果直接连接速度太慢,
    如果name与id是1对1,可试试先查出id
    再查表1