网上我们经常可以找到大量的关于sql调优的文章和帖子,实际上如果没有真正的实践,可以说这些所谓的经验总结,在实际中不一定总是正确和有效。因此很容易误导初学者,对于某个sql的怎么执行还是要看实际执行计划,下面就大家容易出现的误解做下说明。
1) 连接或者利用子查询或者视图的结果一定不使用索引吗?
不一定,如果join 一个是子查询,一个是物理表,物理表在关联字段建立了索引,也是可以利用索引的,如果子查询或者视图不包含group by,在子查询外的where条件在 有时相当于拿到子查询中。
例如:select field1 from (select filed1 from table)tmp where filed1>1000
实际上相当于select filed1 from table where field1>1000
2) Oracle的预编译SQL与非预编译SQL快吗?
我们会在网上或者课本上翻出预编译sql相对于非预编译sql的优势,例如:
预编译sql防止了SQL注入,不必考虑特殊字符的转译,提高了安全性,而且数据库会将SQL存储到共享池中,以便下次使用。
但是,在项目中,我们发现在plsqldeveloper中执行时间为7s的sql,在应用程序中执行却需要3分钟,随后我们改为非预编译sql,执行时间与在工具中的执行时间相同。(IBatis的配置文件的##全部改为$$,SQL将变为非预编译SQL)。改为非预编译SQL,
Oracle的sharepool不会存储非预编译sql的执行计划了吗?但是我们可以很清楚的看到在工具中第一次执行sql是比较慢的,第二次执行就会快些。
3) 使用索引一定会比全表扫描快吗?
SQL的执行计划是经过DBMS的查询分析器经过比较选取的,根据数据量的不同,数据的不同,会产生不同的执行计划,如果数据量比较小,或者使用索引的Cost还不如全表扫描,那么查询分析器会采用全表扫描。
4) 复合索引如果不使用首列会失效吗?
在oracle10g可以使用跳跃索引扫描,如果不使用复合索引的leading column即首列,也是可以使用该复合索引的
5) 索引越多越好吗
索引是消耗存储空间的,索引太多会导致更新或者插入很慢,因为更新或者插入会同时更新插入索引。
6) 在一次select中一个表的多个索引会同时使用吗?
在DB2中有多索引扫描,详细请参考牛新庄的《DB2 DBA参考》,其中可以同时使用2个索引,然后对结果集进行合并,在oracle中还没有看到,因此有待考证。在oracle中,一般情况下,对于一个表只会使用一个索引,所以索引不必建立很多优化查询,因为一次查询只能使用一个索引,请大家讨论。
7) 使用or连接或者in一定不使用索引吗?
有些帖子讲应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or num=20
可以这样查询:
select id from t where num=10
union all
select id from t where num=20
实际上对于简单的查询使用or和in也是可以使用索引的
分享到:
相关推荐
不要迷信找最好的人,要找最合适的人-马云.JPG
Hire&Fire专辑【6】:马云:招人不要迷信最好的人,要找最合适的人-马云.JPG
请不要迷信大模型》 随着人工智能技术的发展,尤其是AI聊天模型如ChatGPT的崛起,人们对其强大功能充满期待,同时也对其背后的机制产生疑问。大模型,如ChatGPT,因其在众多任务中的出色表现,被视为自然语言处理的...
我呼吁每一位读者,如果你的周围还有迷信的人,请不要嘲笑或忽视他们,而应该耐心地引导他们,帮助他们看到迷信背后的真相。因为,每一个打破迷信的个体,都是推动社会向前发展的重要力量。 教育,个人实践和社会...
一方面,有些消费者过分迷信原装面板,即使在经济条件不允许的情况下,也愿意购买合资品牌的低端产品。但行业人士指出,这并非明智之举,因为合资品牌的低端产品几乎不可能保持面板原装,同时这个价格也足以购买到...
- 不要迷信第三方类库:包括Toolkit等第三方类库可能存在兼容性问题,使用时需谨慎,必要时可自行开发相应功能。 - 应用认证要求:提交应用审核前,应对照WP应用认证要求进行逐条检查,确保应用符合所有要求。 ...
在浩瀚的历史长河中,迷信一直是困扰人类社会发展的顽疾之一。它不仅扭曲了人们的理性思维,还可能导致错误的行为决策,造成不可挽回的后果。在中国古代,东汉学者郭宗林的故事,为我们提供了一个破除迷信的生动案例...
1. **不要迷信别人的成功经验**:百姓网通过实践发现,盲目复制他人经验并不一定适合自己。例如,尽管PageSpeed、Gzip等技术普遍被认为能提升网速,但百姓网的实际测试结果却并不尽如人意,强调了个性化与创新的重要...
小学政治:相信科学不迷信(教学方案).pdf
【小学政治相信科学不迷信教学设计】 这是一份专门针对小学政治科目的教学设计文档,旨在帮助学生理解和接受科学知识,摒弃迷信观念。教学设计的核心目标是培养学生的认知、情感和行为三个层面: 1. 认知目标: -...
3. **年轻与迷信**:“你还年轻 你还迷信”,这里的“迷信”是指对理想爱情的盲目追求,相信童话般的爱情故事会在现实中发生,男主角提醒女主角不要过于迷信这些幻想。 4. **王子与幸福**:“梦中的王子在某地总会...
标题中的“只给大模型LeetCode编号,也能解题!...尽管AI在代码生成方面取得了进步,但我们仍需谨慎对待大模型的解题能力,不应过分迷信。在实际应用中,结合人类的专业知识和AI的辅助,可能会产生更好的效果。
【标题】:“弘扬科学精神反对封建迷信学习教案.ppt” 【描述】:这份学习教案旨在教育和提升学员对科学精神的理解,同时批判封建迷信,强调科学在现代社会中的重要性。 【标签】:“专业资料” 【内容概述】: ...
Oracle数据库是全球广泛使用的大型企业级数据库管理系统,其性能优化和设计原则对于任何IT专业人员来说都是至关重要的。本文将围绕“ORACLE学习心得”展开,深入探讨Oracle数据库的优化策略、并发控制、数据库设计...
【崇尚科学,破除迷信,反对邪教】是品德教育中的重要主题,旨在培养孩子们的科学精神和批判性思维,让他们能够辨别事实与虚构,理解科学原理,避免受到迷信思想和邪教活动的影响。以下是对这个主题的详细解读: 1....
【对自由贸易的迷信】 在经济学领域,自由贸易是一个长期被推崇的理念,尤其在正统的西方经济理论中,自由贸易被认为能够实现资源的最优配置,促进全球经济效率。然而,这种迷信并非无懈可击,实际上,自由贸易政策...
在六年级的品德教育课程中,有一个至关重要的主题——崇尚科学、破除迷信、反对邪教。通过一系列精心设计的PPT演示,教师们向学生传授科学知识,以理性之光照亮他们的心灵,将迷信的阴霾一扫而空。 首先,课程以...
青少年应警惕网络迷信.docx
误区二,迷信第三方提供的所谓百度权重值。这类数据并非官方提供,它们只是第三方网站根据自己的算法得出的,实际上的参考价值有限。误区三,将domain查询误认为是反向链接的查询。实际上,domain查询得到的是相关域...