本文目录一览

1,数据库设计问题单表和多表查询执行效率相比有多大区别

access的多表查询,维护要方便的多。效率上也会高,尤其数据量大的时候

数据库设计问题单表和多表查询执行效率相比有多大区别

2,oracle 单表查询in和exist哪个效率更快

数据的快慢和数据量以及索引的建立有关in查询是全表扫描exists为存在检测,无论多少查到一条即处理语句你提到的1..100用oracle的exists不好写查询语句 UPDATE stuMarks1 SET writtenExam=writtenExam+2where exists (select stuno from stuMarks1 where writtenExam>80);
搜一下:oracle 单表查询in和exist哪个效率更快

oracle 单表查询in和exist哪个效率更快

3,数据库比如MYSQL 表连结查询与子查询哪个效率高些 为什么

in子查询、exists子查询、连接,效率的探讨以下是SQL的帮助 (高级查询优化概念)Microsoft? SQL Server? 2000 使用内存中的排序和哈希联接技术执行排序、交集、联合、差分等操作。SQL Server 利用这种类型的查询计划支持垂直表分区,有时称其为分列存储。SQL Server 使用三种类型的联接操作: 嵌套循环联接合并联接哈希联接 如果一个联接输入很小(比如不到 10 行),而另一个联接输入很大而且已在其联接列上创建索引,则索引嵌套循环是最快的联接操作,因为它们需要最少的 I/O 和最少的比较。有关嵌套循环的更多信息,请参见了解嵌套循环联接。 如果两个联接输入并不小但已在二者联接列上排序(例如,如果它们是通过扫描已排序的索引获得的),则合并联接是最快的联接操作。如果两个联接输入都很大,而且这两个输入的大小差不多,则预先排序的合并联接提供的性能与哈希联接相似。然而,如果两个输入的大小相差很大,则哈希联接操作通常快得多。有关更多信息,请参见了解合并联接。 哈希联接可以有效处理很大的、未排序的非索引输入。它们对复杂查询的中间结果很有用,因为: 中间结果未经索引(除非已经显式保存到磁盘上然后创建索引),而且生成时通常不为查询计划中的下一个操作进行适当的排序。查询优化器只估计中间结果的大小。由于估计的值在复杂查询中可能有很大的误差,因此如果中间结果比预期的大得多,则处理中间结果的算法不仅必须有效而且必须适度弱化。 哈希联接使得对非规范化的使用减少。非规范化一般通过减少联接操作获得更好的性能,尽管这样做有冗余之险(如不一致的更新)。哈希联接则减少使用非规范化的需要。哈希联接使垂直分区(用单独的文件或索引代表单个表中的几组列)得以成为物理数据库设计的可行选项。有关更多信息,请参见了解哈希联接。
连接查询的优点是可以用尽可能少的SQL进行查询。简化了应用和数据库之间的IO调用。缺点是如果表设计不好,SQL写得差,会造成数据库大量的内部IO操作,特别是大量没必要的全表扫描。使用这种方式必须要么是确实要读取的数据量非常大,要么是能够通过索引等方式控制住全表扫描的数量。全表扫描在连接情况下的消耗可以说是指数性的升高的。子查询查的缺点是应用和数据库之间的IO调用比较多,损耗了数据库的带宽。但是优点是对原来的被驱动表来说数据是明确的,可以通过大量的索引,特别是主键索引避免全表扫描。用哪种没有一定之规。要看读取的数据量、表设计结构、数据库规模、程序设计等多种因素综合考虑。
连接比子查询的效率要高
这个涉及到数据结构了,你可以用二叉树来分析,正确的SQL语句书写顺序的前提下子查询效率高。但是子查询容易出现错误,对初学者要求比较高。一般二者的效率都是差不多的,只有大数据量的时候才会考虑。如果你是做小项目,用哪个都一样,那个差距很小,分辨不出来的。
各有各的好处 看您怎么用

数据库比如MYSQL 表连结查询与子查询哪个效率高些 为什么


文章TAG:数据库单表查询哪个效率高  数据库设计问题单表和多表查询执行效率相比有多大区别  
下一篇