查询记录可以有多种方法,但是不同的方法在效率上有着千差万别.
在记录多的情况下,尤为明显.
下面举一个例子
表1 articles:字段(id title time posterID)
表2 users :字段(id name password)
查询某人编辑的所有文章的标题.
假设表articles 有3000条记录 users有100条记录
方法一:
SELECT title FROM article,users WHERE posterID = users.id AND users.name='XX';
方法二:
SELECT title FROM article WHERE posterID IN (SELECT id FROM users WHERE name = 'XX');
这两个语句的执行结果是一样的.但效果却有很大的区别
方法一使用链接,计算这个语句是在3000 * 100 = 30 0000 记录中查找与条件匹配的记录.
方法二很简单,先是在表users 100条记录中查找匹配的id,然后再在article 3000条记录中找
即3000 + 100 =3100
相差近100倍.如果有索引那更快.
---------------------------------------------------------------------------------------------------------------------
在n种中你选择了最好的方法了,但是这是最好的方法吗?
如果哪天你发现,还有个更好的方法那怎么办?
改!那么你就要把所有的程序里的sql语句重新写过.烦!
而最好的办法是,建立一个视图.
程序的所有操作基于视图.像上例 可以建立一个 仅 title字段的视图.
CREATE VIEW v_title AS ( SELECT title FROM article,users WHERE posterID = users.id AND users.name='XX';)
而程序设计中都用select title from v_title;
当发现一个更好的查询方法后,你只要修改视图.而程序不用修改,就能运行了.
CREATE VIEW v_title AS (SELECT title FROM article WHERE posterID IN (SELECT id FROM users WHERE name = 'XX'))
分享到:
相关推荐
MySQL是怎么优化视图的?从而明白在MySQL中怎么写与视图相关的查询语句才能有好的效果? 什么是等价谓词重写?MySQL中怎么写WHERE子句有利于提高查询效率? 预计时间1小时 第6课 查询优化技术理论与MySQL实践(四)...
在SQL Server 2000中,引入了索引视图的概念,使得视图不仅可以作为数据的安全访问机制和逻辑展示方式,还可以通过创建唯一群集索引和非群集索引来优化查询效率。 传统的视图在运行时会被临时实体化,即每次查询...
物化视图可以查询表、视图和其他物化视图。通常情况下,物化视图被称为主表(在复制期间)或明细表(在数据仓库中)。 创建物化视图的目的: 1. 在本地维护远程数据的副本,提高查询效率。 2. 生成基于数据表的...
2. **映射视图**:在EF的配置文件或使用`OnModelCreating`方法中,你需要指定视图与实体之间的映射。这包括设置`Table`属性以指定视图名,以及可能的列映射。 3. **查询视图**:一旦视图被正确配置,就可以像操作...
ListView 视图缓存性能优化 ListView 是 Android 中最常用的控件,通过适配器来进行数据适配然后显示出来,而其性能是个很值得研究的话题。在 Android 开发中,ListView 的性能优化是一个重要的方面,本文将讨论 ...
它们通常都是通过内嵌查询来构成,因此,在处理优化时,视图与派生表可以采取相似的优化策略。 在视图优化案例分析中,李海翔首先介绍了创建视图前的准备工作,这包括创建两张表t1和t2,并为它们各自设置一个主键和...
总之,C#允许开发者通过ADO.NET与数据库进行交互,动态获取查询、视图和存储过程的信息。了解如何正确地执行这些操作是C#数据库编程的基础,也是构建高效、灵活的数据库应用程序的关键步骤。通过封装和优化这些操作...
首先,物化视图与普通视图的概念区别是理解查询优化的起点。普通视图(View)是一种虚拟表,它并不存储数据,而是在查询时临时生成结果集。由于普通视图不占用物理存储空间,因此,它不会提高数据库的查询效率。而...
通过使用子查询替换、连接优化、并行查询、物化视图等技术,可以改善查询性能。例如,将嵌套循环转换为哈希连接或排序归并连接,或者使用并行查询来分摊计算负载,都能提高查询速度。此外,避免全表扫描,尽可能利用...
物化视图与普通视图的主要区别在于物理存储和更新方式。普通视图不占用物理空间,每次使用时都需要重新执行SQL获取最新数据,性能受查询语句复杂度影响。而物化视图则是一个实际的物理表,占用了磁盘空间,并且会...
- **视图与查询的区别**:视图的结果保存在数据库中,可以被更新,且具有“更新条件”选项。而查询的结果通常保存为.QPR文件,不直接存在于数据库中,且不支持更新。 5. **视图使用**: - **视图设计器**:与查询...
通过本教程的学习,我们不仅掌握了物化视图和查询重写的基本原理及其在Oracle数据库中的实现方法,而且还深入了解了如何通过一系列的具体操作来优化数据仓库系统的查询性能。这些技术的应用可以显著提高大型数据仓库...
索引和视图都是数据库优化的重要手段。索引可以提高查询速度,而视图可以简化查询操作。 实验报告: 在实验中,我们创建了一个名为worklnfo的表,并在id字段上创建了一个唯一索引index_id。然后,我们使用CREATE ...
本实践主要关注如何利用Oracle数据库的特性与工具来改进SQL查询的执行效率。 首先,了解Oracle查询优化的基本原理至关重要。查询优化器是Oracle数据库的核心组件之一,它负责分析SQL语句并选择最佳执行计划。执行...
查询性能视图则提供了关于HANA执行查询性能的详细信息,有助于优化查询;诊断视图用于对数据库运行时进行监控和故障诊断,能够提供问题发生时的详细信息,便于解决问题。 以上是关于HANA SQL语句和系统视图的一些...
在Oracle数据库管理中,查询优化是一项至关重要的任务,它直接影响到数据库系统的性能和效率。...通过阅读《Oracle查询优化改写 技巧与案例.pdf》这样的资料,可以进一步深入了解这些方法,并在实际工作中灵活运用。
SQL(Structured Query Language)是用于与数据库交互的标准语言,尤其在处理复杂查询、创建视图、设置触发器和优化索引时显得尤为重要。本压缩包文件“Sql复杂查询、视图、触发器、索引.rar”显然是一个针对这些...
此外,即使查询没有直接引用索引视图,优化器也可能会自动选择使用索引视图来提高查询性能。 #### 六、优化器考虑事项 在考虑使用索引视图时,查询优化器需要权衡多个因素: 1. **数据新鲜度**:索引视图中的数据...
在本文中,我们将深入探讨如何在PostgreSQL中创建、使用和删除视图,以及如何利用视图优化数据库查询。 首先,我们创建了一个简单的示例环境,包括三个表格:`stories`(包含小说ID、标题和时间戳)、`authors`...
#### SQL Server执行计划与查询优化基础 - **查询执行计划**:SQL Server执行SQL语句时所采用的策略,包括对表的访问顺序、使用的索引以及如何执行连接操作等。 - **查询优化**:通过对SQL语句的结构调整或改进,...