SQL语句优化
对同一张表进行两种方式查询(结果集相同):
case1 查询条件:包括计算机名,昵称,添加时间等等一些限制条件字段。而且需联表查询别的表
查询数据量: 100万 200万
单纯执行SQL语句所需时间:31毫秒 31毫秒
循环遍历数据集所需时间: 57秒 1分50秒
case 2查询条件:无
select * from 【表】
查询数据量: 100万 200万
单纯执行SQL语句所需时间:31毫秒 31毫秒
循环遍历数据集所需时间: 20秒 40秒
注意下循环遍历数据集时间(纵向100万的,或者200万的都行),查询条件不一样,尽管最终查询数据量是一样的,但是遍历时间差别很大。
为什么呢?
可不可以这么理解,SQL语句越复杂(或者说优化程度没那么高),影响的不是SQL本身的执行,而是数据的提取呢?
相关文档:
固定长度(char)与可变长度(varchar)字符数据类型
char[(n)]
长度为n个字节的固定长度且非Unicode的字符数据。n必须是一个介于1和8,000之间的数值。存储大小为n个字节。char在SQL-92中的同义词为character。
varchar[(n)]
长度为n个字节的可变长度且非Unicode的字符数据。n必须是一个介于1和8,000之间的数值。存储大小为 ......
【引用:猛犸技术文章摘要
】
经测试,方法二可成功删除数据,方法一、三 删除数据失败。请路过的朋友,指点迷津。。。
问题:一个表有自增的ID
列,表中有一些记录内容重复,也就是说这些记录除了ID
不同之外,其他的信息都相同。需要把重复的记录保留一条,剩下的删除
方法一:还是2000
年的时候一位Oracl ......
一、适合读者对象:数据库开发程序员,数据库的数据量很多,涉及到对SP(存储过程)的优化的项目开发人员,对数据库有浓厚兴趣的人。
二、介绍:在数据库的开发过程中,经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。如果项目的SP较多,书写又没有一定的规范,将会影响以后的系统维护 ......
SELECT ROWNUM AS ID
,TO_CHAR(SYSDATE + ROWNUM / 24 / 3600, 'yyyy-mm-dd hh24:mi:ss') AS INC_DATETIME
,TRUNC(DBMS_RANDOM.VALUE(0, 100)) AS RANDOM_ID
,DBMS_RANDOM.STRING('x', 20) RANDOM_STRING
from DUAL
CONNECT BY LEVEL <= 10;
SELECT '('||WMSYS.WM_CONCAT(':P' || ROWNUM)| ......
优化器在形成执行计划时需要做的一个重要选择是如何从数据库查询出需要的数据。对于SQL语句存取的任何表中的任何行,可能存在许多存取路径(存取方法),通过它们可以定位和查询出需要的数据。优化器选择其中自认为是最优化的路径。
在物理层,oracle读取数据,一次读取的最小单位为数据库块(由多个连续的操作系统块组成 ......