我自己写的查询语句  3个表查询  总觉得查的慢  
1.是跟表里记录多有关系还是语句写的有关系?
2.我写的name like '%123%' 和不用模糊查询哪个查的更快些?

解决方案 »

  1.   

    以前没有优化过sql  不知道该追寻什么样的原则  有没有资料看看啊  不用模糊查询也一样可以 只是让用项目的人方便而已  
      

  2.   

    模糊查询如果用 %xxx%的模式,肯定就用上不索引了,最好是前面不要加%,只模糊查询后面部分如果数据量非常庞大,有时候就是要从需求的角度出发考虑了,不然,假设一个极端的情况,对于一个1亿条数据的表,你对他全表检索,那结果是可想而知的如果你一定要做前后都模糊,而且客户一定要,那得考虑自己做针对性的数据存储了:-)
      

  3.   

    你可以找下性能优化相关的资料
    基本上是
    如果能达到要求的话,少用group by,少用子查询嵌套,少用表关联
    省略不必要的代码
      

  4.   


    1.结合执行计划来看,看执行计划的方法首先
    SQL>EXPLAIN PLAN FOR 你的sql语句;

    SQL>EXPLAIN PLAN FOR SELECT * FROM EMP WHERE EMPNO=7369;
    然后
    SELECT plan_table_output
      FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE'));
    查看结果就是前面SQL语句的执行计划。2.如果name字段有索引,那么name like '%123%'不能用上索引,只能全表扫描,这样速度就慢了.改为name like '123%'可以用上索引.
      

  5.   

    那就不要用模糊查询,同时,把在where条件中条到的字段建立一个复合索引,如果你查出来的结果集比较小,就能用上索引了,速度就会比较快了
      

  6.   

    没有用过索引 是在sql里写 还是需要操作字段?
      

  7.   

    用sql语句建索引,如对表sometab的列somecol建立索引,则其语句为CREATE INDEX idx_sometab_somecol ON sometab(somecol);上面的idx_sometab_somecol是索引名称,可以自己定义。索引相当于列的一个目录,建立了上面的索引后,如果where后面有somecol的查询条件会加快查询速度,如select * from sometab where somecol='SOMEVALUE';这个语句会先找索引,在索引中找到somecol对应的行后,再从表中将数据返回给用户。
      

  8.   

    楼主可以贴出自己的SQL语句来给大家看看 
    看下SQL优化方面的知识