`
viproc
  • 浏览: 46376 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

查询 where 优化

 
阅读更多

【IT168 技术】触及数据库操作的基本都是变得很慢了,用的人都会觉得躁火~~然后把这个情况在群里一贴,包括机器配置什么的1说,马上JiuYouQunYou发话了,而且帮我确定了不是机器配置的问题,“深圳-枪手”热心人他的机器512内存过百W的数据里也跑患上飞快,甚至跟那些几W块的机器一样牛(吹过头了),呵呵~~~

  在群友的分析指点Xia,尝试把排序、条件等一个一个去除来做测试,结果发现问题就出在排序部分,去除排序的时候,执行时间由原来的48秒变成0.3x秒,这是个什么档次的BianHua呀~~看着这个结果我激动ing.....

  于是我把涉及排序的字段组成一个联合索引alter table xx add index indexname(x1,x2,x3),经由2分钟创立新索引ZhiHou再执行同一个SQL语句,哇塞0.28S。。。。爽

  于是依照一样的思路把其它几个常用的SQL作了过些优化,效果马上见效

  过了30分钟再查slow sql记录文件,不好了,发现原来一个好好的SQL变得灰常慢了,神马情况?

  几经分析和测试原来就是因为添加了联合索引的原因,而且这个SQL语句当中有个or,当把这个or改用unionZhiHou问题排除。

  这回又得出一个心得:XieSQL的时候千万别一时就手,随便写个就OK,那会为以为带来很严重的后果。

  再附上一段关于Where子句的履行顺序:

  在用MySQL查询数据库的时候,连接了良多个用,发现无比慢。例如:

SELECT ... WHERE p.languages_id = 1 AND m.languages_id =
1 AND c.languages_id = 1 AND t.languages_id =
1 AND p.products_id IN (472,474)
  这样查询需要20多秒,虽然在各个字段上都建立了索引。用分析Explain SQL一分析,发现在第一次分析GuoCheng中就返回了几万条数据:

  WHERE p.languages_id = 1 ,然后再依次依据前提,缩小范围。

  而我改变一下WHERE 字段De位置之后,速度就有了显明地提高:

WHERE p.products_id IN (472,474) AND
p.languages_id = 1 AND m.languages_id = 1 AND c.languages_id =
1 AND t.languages_id = 1
  这样,第一次的条件是p.products_id IN (472,474),它返回的结果只有不到10条,接下来还要根据其它的前提来过滤,自然在速度上有了较大的TiSheng。

  经过实践发现,不要以为WHERE中的字段顺序无所谓,可以随便放在哪,应当尽量地第一次就过滤掉大部分无用的数据,只返回最小范围的数据。

  希望能帮到有同样遭遇的朋友。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tt6668282/archive/2011/06/28/6573854.aspx

分享到:
评论

相关推荐

    sql查询优化 查询优化

    1. 合理使用常量优化查询: 在编写SQL语句时,应尽量避免将字段置于复杂的表达式中,因为这可能阻碍数据库优化器进行有效的优化。例如,`select * from teachers where salary/12=2000`不如`select * from teachers...

    MySQL数据库查询优化

    MySQL中怎么写WHERE子句有利于提高查询效率? 预计时间1小时 第6课 查询优化技术理论与MySQL实践(四)------条件化简 什么是条件化简?MySQL中对什么样的条件自动进行优化?如何写出可利用索引的条件语句? 预计...

    百万数据级快速查询优化技巧

    标题与描述概述的知识点主要集中在数据库查询优化技巧上,尤其针对拥有百万级别数据量的数据库。以下是对这些知识点的详细解读: ### 数据库快速查询优化技巧 #### 1. 避免全表扫描,优化WHERE子句 - **空值判断**...

    PostgreSQL Like模糊查询优化方案

    综上所述,优化PostgreSQL中的LIKE模糊查询涉及多种策略,包括使用全文搜索、相似度查询、优化索引结构以及调整查询计划。针对具体的应用场景和数据特性,结合这些方法,可以显著提升查询效率,降低数据库的负载,...

    数据库中数据查询优化

    WHERE 子句的优化是提高查询效率的关键之一,主要包括以下几个方面: 1. **避免使用 NULL 值的比较**: - 应用 `WHERE num IS NULL` 而非 `WHERE num = 0`。因为后者可能会导致全表扫描。 - 如果 `num` 默认值为 ...

    Postgres查询优化方案

    7. **统计信息更新**:保持统计信息的准确性有助于优化查询计划。定期运行ANALYZE命令,更新表和索引的统计信息,让Postgres能更准确地估算查询成本。 8. **慢查询日志**:启用慢查询日志,记录执行时间较长的查询...

    SQL_Server_2008查询性能优化

    优化查询计划是提高性能的关键。使用`EXPLAIN PLAN`或`SET SHOWPLAN_ALL ON`可以查看查询计划,帮助我们分析查询的运行方式,找出可能的瓶颈。 索引是提升查询速度的重要工具。在设计数据库时,合理创建和维护索引...

    《Oracle查询优化改写技巧与案例》PDF版本下载.txt

    根据提供的文件信息,本文将对《Oracle查询优化改写技巧与案例》这一主题进行详细的解析,涵盖Oracle查询优化的基本概念、重要性、改写技巧及其实际应用案例。 ### 一、Oracle查询优化概述 #### 1.1 查询优化定义 ...

    SQLLITE的查询优化

    这些操作有不同的执行策略,了解它们如何工作可以帮助优化查询性能。例如,在处理`UNION ALL`时,可能会优先考虑输出结果的处理。 2. **子查询优化**:对于包含子查询的复杂查询,尝试将子查询转换为等效的表连接,...

    查询优化.pdf

    以单表查询为例,一条针对employees.titles表的查询语句select * from employees.titles where emp_no > '10101' and emp_no ,根据不同的索引结构,优化器会决定使用主键索引还是二级索引进行查询。在这里,emp_no ...

    oracle查询语句优化

    ### Oracle查询语句优化知识点详解 #### 一、概述 Oracle数据库因其强大的功能和灵活性,在企业级应用中占据着重要地位。随着业务的发展,数据库的数据量急剧增长,如何提高查询效率成为了亟需解决的问题之一。本文...

    Oracle数据库中大型表查询优化的研究

    不过,通常情况下,一个有效的优化策略是分析查询语句,确保WHERE子句中的条件能够利用到索引。如果查询涉及多个表,考虑使用连接操作符(JOIN)的优化,如选择合适的JOIN类型和使用外键约束。 工具在优化过程中也...

    MySQL高级优化之-查询逻辑及where条件提取.pdf

    在优化查询时,关注点应放在WHERE条件的提取和优化上。有效的WHERE条件可以显著减少扫描的行数,提高查询效率。例如,使用索引,避免全表扫描;尽可能地让数据库引擎利用索引,而不是进行全表扫描或排序;避免在...

    SQL Server 2008查询性能优化 源代码

    在SQL Server 2008中,查询性能优化是一项至关重要的任务,因为它直接影响到数据库系统的响应速度和整体效率。"SQL Server 2008查询性能优化源代码"这一资源提供了一种深入学习和实践的方法,帮助我们理解并提升SQL...

    第9章-查询处理和查询优化

    理解这些概念及其背后的算法对于数据库管理员和开发人员来说至关重要,因为它们能够帮助优化查询性能,提升用户体验,同时减少不必要的系统负担。对于初学者而言,掌握这些基础知识是进入数据库领域的坚实基础。

    百万数据查询优化技巧三十则

    ### 百万数据查询优化技巧三十则 #### 数据库查询优化概述 在处理大量数据时,高效的数据库查询优化显得尤为重要。这不仅可以显著提升查询速度、减少系统资源的消耗,还能确保系统的稳定性和响应性。本文将详细...

    Oracle数据库的查询优化

    ### Oracle数据库的查询优化 #### 一、何时需要考虑查询优化 在开发应用程序时,编写高效、优化的SQL语句对于提升系统性能至关重要。当遇到以下情况时,应该重点考虑查询优化: - **表连接**: 当查询涉及到多张表...

    SQLServer数据查询的优化方法

    2. **未充分利用计算列**:某些情况下,计算列能够帮助优化查询过程,但若未创建则可能导致查询效率下降。 3. **查询结果集过大**:当查询返回的数据量远远超过实际所需时,不仅消耗更多的资源,也可能影响整体性能...

    MYSQL WHERE语句优化

    14. **优化查询结构**:例如,使用LIMIT进行分页,避免全表扫描。某些查询结构如`SELECT COUNT(*)`,`SELECT MIN/MAX`,`ORDER BY + LIMIT`等可以有效利用索引来加速。 15. **避免全表扫描**:如果索引可以覆盖大...

Global site tag (gtag.js) - Google Analytics