收藏私塾在线
 

欢迎您来到私塾在线网!   

请登录! 

免费注册 

交流首页 » 面试、就业 »数据库常见面试题目  提现最快的斗地主游戏
发表人 内容
shujia
[头像]

交流经验:
总积分:345
级别:普通会员
注册时间: 2011-11-04
文章: 8
离线

本文地址:http://www.panxinet.com/forum/posts/list/442.html
文章摘要:数据库常见面试题目 ,国家宏观生物农药孔雀鱼,家园网几番多达。

史上最强的oracle数据库面试题

  (1) A 表中有100条记录.

  Select * FROM A Where A.COLUMN1 = A.COLUMN1

  这个语句返回几条记录? (简单吧,似乎1秒钟就有答案了:)

  (2) Create SEQUENCE PEAK_NO

  Select PEAK_NO.NEXTVAL FROM DUAL --> 假设返回1

  10秒中后,再次做


  Select PEAK_NO.NEXTVAL FROM DUAL --> 返回多少?

  (3) SQL> connect sys as sysdba

  Connected.


  SQL> insert into dual values ( 'Y');

     1 row created.

  SQL> commit;

     Commit complete.

  SQL> select count(*) from dual;

     COUNT(*)

     ----------

     2

  SQL> delete from dual;

     commit;

     -->DUAL里还剩几条记录?

  JUST TRY IT
一些高难度的SQL面试题

以下的null代表真的null,提现最快的斗地主游戏:写在这里只是为了让大家看清楚


根据如下表的查询结果,那么以下语句的结果是(知识点:not in/not exists+null)
SQL> select * from usertable;
USERID USERNAME
----------- ----------------
1 user1
2 null
3 user3
4 null
5 user5
6 user6

SQL> select * from usergrade;
USERID USERNAME GRADE
---------- ---------------- ----------
1 user1 90
2 null 80
7 user7 80
8 user8 90
执行语句:

select count(*) from usergrade where username not in (select username from usertable);

select count(*) from usergrade g where not exists
(select null from usertable t where t.userid=g.userid and t.username=g.username);

结果为:语句1( 0 ) 语句2 ( 3 )

A: 0 B:1 C:2 D:3 E:NULL


2

在以下的表的显示结果中,以下语句的执行结果是(知识点:in/exists+rownum)
SQL> select * from usertable;
USERID USERNAME
----------- ----------------
1 user1
2 user2
3 user3
4 user4
5 user5

SQL> select * from usergrade;
USERNAME GRADE
---------------- ----------
user9 90
user8 80
user7 80
user2 90
user1 100
user1 80

执行语句
Select count(*) from usertable t1 where username in
(select username from usergrade t2 where rownum <=1);

Select count(*) from usertable t1 where exists
(select 'x' from usergrade t2 where t1.username=t2.username and rownum <=1);

以上语句的执行结果是:( ) ( )
A: 0 B: 1 C: 2 D: 3

根据以下的在不同会话与时间点的操作,判断结果是多少,其中时间T1<T2<……<Tn。(知识点:封锁与并发)
原始表记录为;
select * from emp;
EMPNO DEPTNO SALARY
----- ------ ------
100 1 55
101 1 50

select * from dept;
DEPTNO SUM_OF_SALARY
------ -------------
1 105
2

可以看到,现在因为还没有部门2的员工,所以总薪水为null,现在,
有两个不同的用户(会话)在不同的时间点(按照特定的时间顺序)执行了一系列的操作,那么在其中或最后的结果为:

time session 1 session2
----------- ------------------------------- -----------------------------------
T1 insert into emp
values(102,2,60)

T2 update emp set deptno =2
where empno=100

T3 update dept set sum_of_salary =
(select sum(salary) from emp
where emp.deptno=dept.deptno)
where dept.deptno in(1,2);

T4 update dept set sum_of_salary =
(select sum(salary) from emp
where emp.deptno=dept.deptno)
where dept.deptno in(1,2);

T5 commit;

T6 select sum(salary) from emp group by deptno;
问题一:这里会话2的查询结果为:
T7 commit;
=======到这里为此,所有事务都已完成,所以以下查询与会话已没有关系========

T8 select sum(salary) from emp group by deptno;
问题二:这里查询结果为

T9 select * from dept;
问题三:这里查询的结果为

问题一的结果( ) 问题二的结果是( ) 问题三的结果是( )

A: B:
---------------- ----------------
1 50 1 50
2 60 2 55

C: D:
---------------- ----------------
1 50 1 115
2 115 2 50

E: F:
---------------- ----------------
1 105 1 110
2 60 2 55


有表一的查询结果如下,该表为学生成绩表(知识点:关联更新)
select id,grade from student_grade
ID GRADE
-------- -----------
1 50
2 40
3 70
4 80
5 30
6 90

表二为补考成绩表
select id,grade from student_makeup
ID GRADE
-------- -----------
1 60
2 80
5 60

现在有一个dba通过如下语句把补考成绩更新到成绩表中,并提交:
update student_grade s set s.grade =
(select t.grade from student_makeup t
where s.id=t.id);
commit;
请问之后查询:
select GRADE from student_grade where id = 3;结果为:

A: 0 B: 70 C: null D: 以上都不对


根据以下的在不同会话与时间点的操作,判断结果是多少,
其中时间T1<T2<……<Tn。(知识点:DDL与封锁)

session1 session2
-------------------------------------- ----------------------------------------
T1 select count(*) from t;
--显示结果(1000)条

T2 delete from t where rownum <=100;

T3 begin
delete from t where rownum <=100;
commit;
end;
/

T4 truncate table t;

T5 select count(*) from t;
--这里显示的结果是多少

A: 1000 B: 900 C: 800 D: 0

////////////////////////////////////////////////////////////////////
表:
索引 凭证编码 金额 摘要 日期
cnsy pzbm pzje cnzy cnrq
1 101 100.00
2 102 100.00
3 202 200.00
4 203 100.00
得到结果
索引 凭证编码 期出余额 金额 期末金额 摘要
1 101 0 100.00 100.00
2 102 100.00 100.00 200.00
3 202 200.00 200.00 400.00
4 203 400.00 100.00 500.00
///////////////////////////////////////////////////////////////////
一个简单表:INEN

ITEM COLOR QU
----------------------------
TABLE RED 204
TABLE BLUE 125
CHIRE RED 256
CHIRE BLUE 210


///////////////////////////////////////////////////////////////////


  在开始考试之前,我需要一个模式和一些数据来运行所要考核的查询,列表A创建了所需的这些数据:

  列表A:

  IF OBJECT_ID('Sales') > 0
  DROP TABLE Sales
  GO
  IF OBJECT_ID('Customers') > 0
  DROP TABLE Customers
  GO
  IF OBJECT_ID('Products') > 0
  DROP TABLE Products
  GO
  CREATE TABLE Customers
  (
  CustomerID INT IDENTITY PRIMARY KEY,
  FirstName VARCHAR(50),
  LastName VARCHAR(50),
  City VARCHAR(50),
  State CHAR(2),
  Zip VARCHAR(10)
  )
  GO
  CREATE TABLE Products
  (ProductID TINYINT IDENTITY PRIMARY KEY,
  ProductName VARCHAR(20),RecommendedPrice
  MONEY,Category VARCHAR(10)
  )GO CREATE TABLE Sales(SaleID INT IDENTITY
  PRIMARY KEY,ProductID TINYINT NOT NULL
  REFERENCES Products(ProductID),CustomerID INT
  NOT NULL REFERENCES Customers(CustomerID),SalePrice
  MONEY NOT NULL,SaleDate SMALLDATETIME NOT NULL)GO
  INSERT INTO Products(ProductName, RecommendedPrice, Category)
  VALUES('DVD',105,'LivingRoom')INSERT INTO
  Products(ProductName, RecommendedPrice, Category)
  VALUES('Microwave',98,'Kitchen')INSERT
  INTO Products(ProductName, RecommendedPrice,
  Category)VALUES('Monitor',200,'Office')INSERT
  INTO Products(ProductName, RecommendedPrice, Category)
  VALUES('Speakers',85,'Office')INSERT INTO
  Products(ProductName, RecommendedPrice, Category)
  VALUES('Refrigerator',900,'Kitchen')INSERT INTO
  Products(ProductName, RecommendedPrice, Category)
  VALUES('VCR',165,'LivingRoom')
  INSERT INTO Products(ProductName, RecommendedPrice, Category)
  VALUES('CoffeePot',35,'Kitchen')GO
  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('John','Miller','Asbury','NY','23433') INSERT INTO
  Customers(FirstName, LastName, City, State, Zip)
  VALUES('Fred','Hammill','Basham','AK','85675')
  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('Stan','Mellish','Callahan','WY','38556')
  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('Adrian','Caparzo','Denver','CO','12377')
  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('Mike','Horvath','Easton','IN','47130')
  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('Irwin','Wade','Frankfurt','KY','45902')
  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('George','Marshall','Gallipoli','ND','34908')
  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('Frank','Costello','Honolulu','HI','23905')
  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('Billy','Costigan','Immice','SC','75389')
  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('Shelly','Sipes','Lights','AZ','35263')
  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('Chirsty','Melton','Spade','CA','97505')
  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('Amanda','Owens','Flask','CN','50386')
  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('Brittany','Smits','Bourbon','KY','24207')
  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('Kristy','Bryant','Tarp','FL','58960')
  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('Kelly','Street','TableTop','ID','57732')
  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('Tricia','Hill','Camera','ME','46738')
  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('Holly','Raines','Compact','MS','35735')
  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('Natalie','Woods','Woods','IN','87219')
  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('Wendy','Hilton','Action','KY','47093')
  GO
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(1,1,130,'2/6/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(2,2,97,'1/7/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(3,3,200,'8/8/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(4,4,80,'4/9/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(5,5,899,'10/10/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(6,6,150,'10/11/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(3,7,209,'12/12/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(4,8,90,'5/13/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(6,9,130,'6/14/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(2,14,85,'6/19/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(3,15,240,'9/20/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(1,16,99,'7/21/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(1,17,87,'3/22/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(2,18,99,'1/23/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(6,19,150,'3/24/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(5,5,900,'3/10/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(4,6,86,'8/11/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(2,7,88,'8/12/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(3,8,198,'12/13/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(1,9,150,'5/14/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(6,14,99,'7/19/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(6,15,104,'9/20/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(3,16,270,'2/21/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(4,17,90,'7/22/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(1,1,130,'3/6/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(2,2,102,'4/7/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(1,3,114,'11/8/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(5,4,1000,'5/9/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(5,5,1100,'10/10/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(3,6,285,'6/11/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(2,7,87,'10/12/2005')
  INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate)
  VALUES(3,8,300,'7/13/2005')
  GO

一旦我载入了这些数据,我就可以开始测试了(提示:我会让应聘者将他们编写的SELECT/UPDATE/INSERT/DELETE 语句存储在一个文本文件中,这样我以后可以随时阅览)。

测试

  测试项目#1:返回在2005年10月售出的所有产品的名称、价格和客户姓名,答案见列表B:

  SELECT
  c.FirstName, c.LastName, p.ProductName, s.SalePrice
  FROM
  Sales s
  INNER JOIN Customers c ON s.CustomerID = c.CustomerID
  INNER JOIN Products p ON s.ProductID = p.ProductID
  WHERE
  s.SaleDate >= '10/1/2005' AND
  s.SaleDate < '11/1/2005'


  测试项目#2:返回没有购买产品并且位于客户表格上的人的姓名及其客户ID,答案参见列表C:

  SELECT
  c.CustomerID, c.FirstName, c.LastName
  FROM
  Sales s
  RIGHT OUTER JOIN Customers c ON s.CustomerID = c.CustomerID
  WHERE
  s.CustomerID IS NULL


  测试项目#3:返回客户姓名、销售价格、建议售价、建议售价和实际价格的差额,该差额必需是正数,答案见列表D:

  SELECT
  c.FirstName, c.LastName, s.SalePrice, p.RecommendedPrice,
  ABS(s.SalePrice - p.RecommendedPrice)
  AS AbsoluteSalePriceDifference
  FROM
  Sales s
  INNER JOIN Customers c ON s.CustomerID = c.CustomerID
  INNER JOIN Products p ON s.ProductID = p.ProductID


  测试项目#4:根据产品类别计算平均价格,答案见列表E:

  SELECT
  p.Category, AVG(s.SalePrice) AS AverageSalePrice
  FROM
  Sales s
  INNER JOIN Products p ON s.ProductID = p.ProductID
  GROUP BY p.Category

测试项目#5:将以下的客户和销售信息加入到数据库中:

  FirstName: Chris
  LastName: Kringle
  City: Henryville
  State: IN
  Zip: 47126
  ProductID: 3
  SalePrice: 205
  SaleDate: 12/31/2005


  答案见列表F:

  INSERT INTO Customers(FirstName, LastName, City, State, Zip)
  VALUES('Chris', 'Kringle', 'Henryville', 'IN', '47126')
  INSERT INTO Sales(CustomerID, ProductID, SalePrice, SaleDate)
  VALUES(SCOPE_IDENTITY(), 3, 205, '12/31/2005')


  测试项目#6:从数据库中删除来自缅因洲(‘ME’)的客户,答案见列表G:

  DELETE s
  FROM
  Sales s
  JOIN Customers c ON s.CustomerID = c.CustomerID
  WHERE
  c.State = 'ME'
  DELETE c
  FROM
  Customers c
  WHERE
  c.State = 'ME'


  测试项目#7:返回客户购买了两个或多个产品的平均售价和产品类别,答案见列表H:

  SELECT
  p.Category, AVG(s.SalePrice)
  FROM
  Sales s
  INNER JOIN
  (
  SELECT s.CustomerID
  FROM
  Sales s
  GROUP BY s.CustomerID
  HAVING COUNT(CustomerID) >= 2
  ) x ON s.CustomerID = x.CustomerID
  INNER JOIN Products p ON s.ProductID = p.ProductID
  GROUP BY p.Category


  测试项目#8:将销售在2005年6月10日到6月20日之间的产品的销售价格升级为建议售价,答案见列表I:

  UPDATE s
  SET SalePrice = p.RecommendedPrice
  FROM
  Sales s
  INNER JOIN Products p ON s.ProductID = s.ProductID
  WHERE
  SaleDate >= '6/10/2005' AND
  SaleDate < '6/21/2005'

测试项目#9:根据产品种类计算建议售价超过实际售价10元及以上的销售数量,答案见列表J:

  SELECT
  p.Category, COUNT(*) AS NumberOfSales
  FROM
  Sales s
  INNER JOIN Products p ON s.ProductID = p.ProductID
  GROUP BY p.Category
  HAVING
  AVG(p.RecommendedPrice) >= AVG(s.SalePrice)+10


  测试项目#10:不使用叠代构建,返回所由销售产品的销售日期,并按照该日期升序排列,答案见列表K:

  SELECT
  s.SaleDate,
  s.SalePrice,
  (
  SELECT
  SUM(SalePrice)
  FROM
  Sales s2
  WHERE
  s2.SaleDate <= s.SaleDate
  ) AS RunningTotal
  FROM
  Sales s
  ORDER BY
  s.SaleDate ASC


  评分

  我曾经使用类似的考题去考察很多应聘SQL Server数据库开发职位的人,但是迄今为止,只有2个人可以正确地回答出所有的问题。

  平均分大约为50-60%,如果应聘者的表现高于这个平均分,那么我就认为他或她是一位优秀的TSQL程序员,如果应聘者获得了90%以上的得分,那么他或她就是一位非常优异的程序员。



///////////////////////////////////////////////////////////////////

Oracle性能调优原则
oracle性能调优原则
  任何事情都有它的源头,要解决问题,也得从源头开始,影响ORACLE性能的源头非常多,主要包括如下方面:

  数据库的硬件配置:CPU、内存、网络条件

  1. CPU:在任何机器中CPU的数据处理能力往往是衡量计算机性能的一个标志,并且ORACLE是一个提供并行能力的数据库系统,在CPU方面的要求就更高了,如果运行队列数目超过了CPU处理的数目,性能就会下降,我们要解决的问题就是要适当增加CPU的数量了,当然我们还可以将需要许多资源的进程KILL掉;

  2. 内存:衡量机器性能的另外一个指标就是内存的多少了,在ORACLE中内存和我们在建数据库中的交换区进行数据的交换,读数据时,磁盘I/O必须等待物理I/O操作完成,在出现ORACLE的内存瓶颈时,我们第一个要考虑的是增加内存,由于I/O的响应时间是影响ORACLE性能的主要参数,我将在这方面进行详细的讲解

  3. 网络条件:NET*SQL负责数据在网络上的来往,大量的SQL会令网络速度变慢。比如10M的网卡和100的网卡就对NET*SQL有非常明显的影响,还有交换机、集线器等等网络设备的性能对网络的影响很明显,建议在任何网络中不要试图用3个集线器来将网段互联。

  OS参数的设置

  下表给出了OS的参数设置及说明,DBA可以根据实际需要对这些参数进行设置

  内核参数名

  说明

  bufpages

  对buffer空间不按静态分配,采用动态分配,使bufpages值随nbuf一起对buffer空间进行动态分配。

  Create_fastlinks

  对HFS文件系统允许快速符号链接

  dbc_max_pct

  加大最大动态buffer空间所占物理内存的百分比,以满足应用系统的读写命中率的需要。

  Dbc_min_pct

  设置最小动态buffer空间所占物理内存的百分比

  desfree

  提高开始交换操作的最低空闲内存下限,保障系统的稳定性,防止出现不可预见的系统崩溃(Crash)。

  Fs_async

  允许进行磁盘异步操作,提高CPU和磁盘的利用率

  lotsfree

  提高系统解除换页操作的空闲内存的上限值,保证应用程序有足够的可用内存空间。

  Maxdsiz

  针对系统数据量大的特点,加大最大数据段的大小,保证应用的需要。(32位)

  maxdsiz_64bit

  maximum process data segment size for 64_bit

  Maxssiz

  加大最大堆栈段的大小。(32_bit)

  maxssiz_64bit

  加大最大堆栈段的大小。(64_bit)

  Maxtsiz

  提高最大代码段大小,满足应用要求

  maxtsiz_64bit

  原值过大,应调小

  Minfree

  提高停止交换操作的自由内存的上限

  Shmem

  允许进行内存共享,以提高内存的利用率

  Shmmax

  设置最大共享内存段的大小,完全满足目前的需要

  Timeslice

  由于系统的瓶颈主要反映在磁盘I/O上,因此 降低时间片的大小,一方面可避免因磁盘I/O不畅造成CPU的等待,从而提高了CPU的综合利用率。另一方面减少了进程的阻塞量。

  Unlockable_mem

  提高了不可锁内存的大小,使可用于换页和交换的内存空间扩大,用以满足系统对内存管理的要求。

  用户SQL质量

  以上讲的都是硬件方面的东西,在条件有限的条件下,我们可以调整应用程序的SQL质量:

  1. 不要进行全表扫描(Full Table Scan):全表扫描导致大量的I/O

  2. 尽量建好和使用好索引:建索引也是有讲究的,在建索引时,也不是索引越多越好,当一个表的索引达到4个以上时,ORACLE的性能可能还是改善不了,因为OLTP系统每表超过5个索引即会降低性能,而且在一个sql 中, oracle 从不能使用超过 5个索引;当我们用到GROUP BY和ORDER BY时,ORACLE就会自动对数据进行排序,而ORACLE在INIT.ORA中决定了sort_area_size区的大小,当排序不能在我们给定的排序区完成时,ORACLE就会在磁盘中进行排序,也就是我们讲的临时表空间中排序, 过多的磁盘排序将会令 free buffer waits 的值变高,而这个区间并不只是用于排序的,对于开发人员我提出如下忠告:

  1)、select,update,delete 语句中的子查询应当有规律地查找少于20%的表行.如果一个语句查找的行数超过总行数的20%,它将不能通过使用索引获得性能上的提高.

  2)、索引可能产生碎片,因为记录从表中删除时,相应也从表的索引中删除.表释放的空间可以再用,而索引释放的空间却不能再用.频繁进行删除操作的被索引的表,应当阶段性地重建索引,以避免在索引中造成空间碎片,影响性能.在许可的条件下,也可以阶段性地truncate表,truncate命令删除表中所有记录,也删除索引碎片.

  3)、在使用索引时一定要按索引对应字段的顺序进行引用。

  4)、用(+)比用NOT IN更有效率。

  降低ORACLE的竞争:

  先讲几个ORACLE的几个参数,这几个参数关系到ORACLE的竞争:

  1)、freelists 和 freelist 组:他们负责ORACLE的处理表和索引的空间管理;

  2)、pctfree 及 pctused:该参数决定了freelists 和 freelist 组的行为,pctfree 和pctused 参数的唯一目的就是为了控制块如何在 freelists 中进出

  设置好pctfree 及 pctused对块在freelists的移走和读取很重要。

  其他参数的设置

  1)、包括SGA区(系统全局区):系统全局区(SGA)是一个分配给Oracle 的包含一个 oracle 实例的数据库的控制信息内存段。

  主要包括数据库高速缓存(the database buffer cache),

  重演日志缓存(the redo log buffer),

  共享池(the shared pool),

  数据字典缓存(the data dictionary cache)以及其它各方面的信息

  2)、db_block_buffers(数据高速缓冲区)访问过的数据都放在这一片内存区域,该参数越大,Oracle在内存中找到相同数据的可能性就越大,也即加快了查询速度。

  3)、share_pool_size (SQL共享缓冲池):该参数是库高速缓存和数据字典的高速缓存。

  4)、Log_buffer (重演日志缓冲区)

  5)、sort_area_size(排序区)

  6)、processes (同时连接的进程数)

  7)、db_block_size (数据库块大小):Oracle默认块为2KB,太小了,因为如果我们有一个8KB的数据,则2KB块的数据库要读4次盘,才能读完,而8KB块的数据库只要1次就读完了,大大减少了I/O操作。数据库安装完成后,就不能再改变db_block_size的值了,只能重新建立数据库并且建库时,要选择手工安装数据库。

  8)、open_links (同时打开的链接数)

  9)、dml_locks

  10)、open_cursors (打开光标数)

  11)、dbwr_io_slaves (后台写进程数)

推广链接
精品视频课程推荐

Java Web开发理论部分视频教程
系统掌握开发实际的Java Web应用所需的理论知识和技能(Servlet、Jsp、JavaBean、TagLib、EL、JSTL、MVC模式、连接池DataSource、JNDI等知识)。涉及项目:在线投票计数、在线人数统计、登录检查、购物车、商品管理、非法字符替换等多个随堂演示小应用。

Spring3开发实战-独家视频教程
从零到精通Spring3的开发知识;IoC/DI的思想、IoC/DI的运行流程、IoC/DI的开发指导、AOP的思想、AOP的运行流程、AOP应用的设计、Spring对JDBC和Hibernate的支持、Spring的事务、SSH的集成应用

ant基础实战视频教程
学习项目构建工具ant的使用,彻底掌握在实际的开发中应用ant进行项目构建

Oracle性能优化视频教程
深入浅出地学习Oralce优化的原理与技巧,内容权威全面、细致深入、重点突出,剖析提高挈领,示例丰富充盈,实例和理论完美结合。1:百万级数据量示例;系统高可靠性、高健壮性原理及策略;热表操作;完整性策略;数据库死锁如何解决; 2:索引表空间如何推算规划;b-tree索引的存储结构、索引扫描方式;Oracle执行计划的如何阅读、推荐的索引使用策略; 3:CBO模型;自动化表分析任务、能大幅提高索引性能的原子级表基础约束策略、表分析原理、表间关系和模式; 4:逻辑存储结构、物理存储结构、内存结构、进程结构;ASM存储、逻辑存储结构单元;Oracle实例结构之检查点及实例恢复

Oracle数据库开发及SQL基础实战视频教程
Oracle的基本使用,深入sql语句编写,使用jdbc存取数据库

bajige0919
[头像]

交流经验:
总积分:7102
级别:VIP2
注册时间: 2011-11-19
文章: 199
离线

好的话 就顶你 呵呵


个性签名:谢谢java私塾的分享资料
 
交流首页 » 面试、就业
前往:   

关于我们 | 联系我们 | 用户协议 | 私塾在线服务协议 | 版权声明 | 隐私保护

版权所有 Copyright(C)2009-2012 私塾在线学习网