解决方案 »

  1.   

    索引没做啊?索引做了能跟sqlserver里面一样快吗
      

  2.   

    你sqlserver里面不做索引几秒钟也查不出来吧
      

  3.   

    表a,b 的no字段必须做索引,另b.date 确定没有null值
      

  4.   

    create index TEXTINDEX1 on 表a(NO); 
    create index TEXTINDEX2 on 表b(NO); 
    是这样吧
      

  5.   


    不要使用笛卡尔积表达式。SQL Server自动优化得很好。其它的许多数据库系统可能是需要你数据库程序员写出的sql语句有一定素质的,例如这个连接语句。
      

  6.   


    是查询语句写法的问题。没有认真学习过 sql 的人,可能“只要能出结果就行了”的意识一直在作怪。没有找到过一本稍为专业点的sql教科书看看。而SQL Server会对你写的每一种sql语句进行几十种不同的优化,然后将最好的一种保存在数据库系统中重复使用。因此你乱写sql语句可能也会被SQL Server自动改为正规的inner join关系运算语句。但是一个正规学习过sql的程序员为什么不能要求自己就去学会分析判断“哪些写法最不好”呢?
      

  7.   

    sqlserver使用inner join,在oracle不建议用inner join,用这种直接from两个表;
    建了索引花了14分半中
    where条件是以下往上解析的,要把数据多的放在后面
    好像就这些语法啊一般几百万数量级的查询大约是要多少时间啊
      

  8.   

    即使你使用 inner join 语句,对于某些数据库系统,它也不会只能地将关系计算的两端(也就是表a、表b)反转过来进行性能分析,而是傻傻地按照你写的表达式进行计算。所以就算是你写inner join语句,你也需要自己去判断哪一个表写在前边才能提高查询性能,有时候可能你需要把b表写在a表前边才行,而当(运行一些天只后)a、b表中的数据量的比例颠倒改变了以后,可能你又得重新修改sql语句而让a表写在b表之前。SQL Server具有很好的 sql 优化机制。但是这其实降低了一些不成熟的、不爱研究问题的程序员的动手能力。
      

  9.   

    oracle和sql server机制不一样的
    拿你上面的语句来讲,oracle的执行计划是从后往前,所以两张表关联(两个表的前后顺序、where条件的顺序等都会影响到执行效率;一般:小数据量的表放在后面关联,能过滤大数据量的where条件放在后面)
    另外,你的表有没有创建索引你用pl/sql查看一下执行计划,看下慢在哪里?
    也可以把执行计划贴出来,别人好帮你分析。
      

  10.   

    楼主的sql基础约等于零,需要先补脑。