关于SQL优化
说句大废话,那就是“合理的平衡各种资源的使用,内存,cpu,io 等等”。这也是很有道理的,但是实际就不好做了,如何平衡呢?
具体点的么,通过比较,应该是响应时间做为主要的评判因素了。但是可能由于一些不确定的因素,可能会出现:这次跑的快,不等于下次也跑的快了。
那就要根据表的数据量的变化,确定一个比较合理的执行计划了,主要还是要降低逻辑读为调优的目标,其实物理读意义不大,一个sql语句第一次执行物理读肯定是很大的,到了第2次物理读也许就很小了。
某高人说:
在数据库整体上来讲,是要降低 物理读
而对于单条 sql 来讲,是以逻辑读的降低为标准的
道理很简单,对于单条sql来说,如果反复运行,物理读决定于 data buffer 的大小 ,第一次运行 和 第二次运行也是不一样的。
但比较稳定的是 逻辑读。 如果以物理读为标准,那难道物理读为0的sql就是好sql 了?如果sql的逻辑读都良好,那数据库整体的物理读降下来也是很自然的事情
高人又说:
临时段是不会生产redo 的
buffer gets 就可以理解为 对 buffer cache 中 buffer 的访问 buffer*次 ,也可以看做访问的 buffer数量,当然可能存在着一个buffer被访问多次的情况
至于 buffer gets,如果访问的块不在内存中自然就产生物理读,可物理读并不影响buffer gets ,因为对数据的访问最终是在内存中完成的,虽然额外地有物理读。
db block gets 仅仅表示 类似dml这类操作去访问数据块,dml 操作数据最终也是在访问buffer的过程中完成的啊,而 consistent gets 表示类似 select这样的查询去访问buffer。 更严格来说,是叫 current mode and query mode .这是oracle的读一致性的特点决定的
相关文档:
建表
create table users(
id number(4) primary key,
username varchar2(10),
password varchar2(10)
)
查询表并解锁表(即可以点击输入框下面的"锁"图标工具, 即"Edit data")
select * from users for update
删除表中多余的列
alter table mobilephone drop column mobiletype
转载
------------------- ......
SQL语言由命令、子句、运算和集合函数等构成。在SQL中,数据定义语言DDL(用来建立及定义数据表、字段以及索引等数据库结构)包含的命令有CREATE、DROP、ALTER;数据操纵语言DML(用来提供数据的查询、排序以及筛选数据等功能)包含的命令有SELECT、INSERT、UPDATE、DELETE。
一、SQL语句
(1)Select 查询语句
语 ......
二、以形参的形式定义和使用记录、对象类型
在用作形式参数时,记录类型和对象类型有很多相同之处。在将它们作为游标、函数或过程的形式参数以前,事先都必须定义一个记录类型或者对象类型。
如下例所示:
记录
DECLARE
-- Define a record type.
TYPE individual_record IS RECORD
(individual_id ......
总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法以及SQL语句中日期格式的表示(#)、('')
在Delphi中进行字符变量连接相加时单引号用('''),又引号用('''')表示
首先定义变量
var
AnInt:integer=123;//为了方便在此都给它们赋初值。虽然可能在引赋初值在某些情况下不对
AnIntStr:string='456'; ......
winform下:
//存储
private void MemoryImage()
{
string sql = "";
&nbs ......