- 浏览: 791915 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (981)
- javascript (102)
- java (212)
- JQuery (81)
- 幽默笑话 (2)
- 只言片语 (6)
- 开发小记 (283)
- Hibernate (17)
- DWR (4)
- SQL (10)
- spring-ibatis (8)
- linux (24)
- Struts1 (8)
- Struts2 (16)
- spring (42)
- Mybatis (16)
- css (18)
- servlet (8)
- jdbc (4)
- jsp (1)
- spring-jdbc (2)
- FreeMarker (2)
- MySQL (24)
- JQuery-Grid (7)
- jstl (5)
- 正则表达式 (1)
- 面试集锦 (86)
- unix (18)
- 开发工具 (23)
- ajax (5)
- webservice (4)
- log4j (3)
- oracle (15)
- extjs (14)
- 其他 (9)
- 优秀技术参考地址 (1)
- 性能 (3)
- 数据库 (25)
- 算法 (15)
- 设计模式 (10)
- Python (3)
- AIX (5)
- weblogic (1)
- shell (14)
- quartz (5)
- 图形文件FusionCharts (1)
- Websphere (4)
- 转载 (5)
- hadoop (1)
- highchart (24)
- perl (22)
- DB2 (7)
- JBoss (1)
- JQuery Easy UI (9)
- SpringMVC (5)
- ant (5)
- echart (9)
- log4J配置 (3)
- 多线程 (10)
- 系统架构 (7)
- nginx (3)
- loadrunner1 (1)
- 分布式 (1)
- Dubbo (1)
- Redis (2)
- JMS (4)
- 自动化测试 (3)
- Spring循环依赖的三种方式 (1)
- spring-boot (2)
- 高级测试 (9)
- github (2)
- sonar (1)
- docker (6)
- web前端性能优化 (1)
- spring-aop (6)
- rabbit (1)
- ELK (1)
- maven (1)
- minio (1)
最新评论
-
zengshaotao:
jstl1point0 写道很好啊,如果有带Session会话 ...
Nginx+Tomcat搭建高性能负载均衡集群 -
jstl1point0:
很好啊,如果有带Session会话的怎么搞呢
Nginx+Tomcat搭建高性能负载均衡集群
一。SQL语句优化的策略都有哪些:
1.建表的时候。应尽量建立主键,根据主键查询数据;
2.大数据表删除,用truncate table代替delete。
3.合理使用索引,在OLTP应用中一张表的索引不要太多。组合索引的列顺序尽
量与查询条件列顺序保持一致;对于数据操作频繁的表,索引需要定期重建,
以减少失效的索引和碎片。
4.查询尽量用确定的列名,少用*号
5.使用where条件命中索引
6.将能过滤大量数据的where条件放到where条件集合的最前门
7.对于大量的字符匹配,要使用exist,用in拼接的话容易造成sql被无端截取
二。数据库表关联:
分了内连接和外连接。内连接也就是相等连接
外连接分为左外连接和右外连接。
1. LEFT OUTER JOIN:左外关联
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
LEFT OUTER JOIN departments d
ON (e.department_id = d.department_id);
等价于
SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id=d.department_id(+);
结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的
员工记录
2. RIGHT OUTER JOIN:右外关联
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id);
等价于
SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id(+)=d.department_id;
结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。
3. FULL OUTER JOIN:全外关联
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
FULL OUTER JOIN departments d
ON (e.department_id = d.department_id);
结果为:所有员工及对应部门的记录,包括没有对应部门编号 department_id
的员工记录和没有任何员工的部门记录。
9. 事务:是一系列的数据库操作,是数据库应用的基本逻辑单位。事务性质:
原子性。即不可分割性,事务要么全部被执行,要么就全部不被执行。
一致性或可串性。事务的执行使得数据库从一种正确状态转换成另一种正确
状态
隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任
何其他事务,
持久性。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交
后有了其他故障,事务的处理结果也会得到保存。
存储过程:存储过程就是编译好了的一些sql语句。因为SQL语句已经预编绎过
了,因此运行的速度比较快。
GRANT (Select,delete,…) ON (对象) TO USER_NAME [WITH GRANT
OPTION];//授权
REVOKE (权限表) ON(对象) FROM USER_NAME [WITH REVOKE OPTION] //撤权
Create UNIQUE INDEX index_name ON TableName(col_name);//建索引
INSERT INTO tablename {column1,column2,…} values(exp1,exp2,…);//插
入
INSERT INTO Viewname {column1,column2,…} values(exp1,exp2,…);//插入
视图实际影响表
UPDATE tablename SET name=’zang 3’,email=‘wew’ condition;//更新
数据
数据库索引类似于书的目录,主要用于提高查询效率,也就是按条件查询的时
候,先查询索引,再通过索引找到相关的数据,索引相当于记录了对某个关键
词,指定到不同的文件,或者文件里的不同位置,当然索引自身也是通过文件
来保存的
加了索引后,也不能保证在每次检索时都会使用列索引。
如果, SQL 检索语句编写不当,就无法使用索引。
1、LIKE 运算符,进行模糊检索时,只能在前方一致的检索时,才能使用索引
。
以下写法,索引不会被使用。
[sql]
SELECT * FROM employee WHERE lname_pinyin LIKE '%w%';
SELECT * FROM employee WHERE lname_pinyin LIKE '%w';
2、使用 IS NOT NULL 、 <> 的场合,也不会使用索引。如下:
[sql]
SELECT * FROM employee WHERE lname_pinyin IS NOT NULL;
SELECT * FROM employee WHERE lname_pinyin <> 'wang';
3、对列使用了运算或者函数的情况下,不会使用索引,如下:
[sql]
SELECT * FROM employee WHERE YEAR(birth) = '1980'; -- 不使用索引
SELECT * FROM employee WHERE birth >= '1980-01-01' AND birth <=
'1980-12-31'; --使用了索引
4、复合索引的第一列,没有包含在 WHERE 条件语句中,如下:
[sql]
CREATE INDEX idx_pinyin ON employee(lname_pinyin, fname_pinyin);
SELECT * FROM employee WHERE lname_pinyin = 'wang' AND fname_pinyin =
'xiao'; --用了索引
SELECT * FROM employee WHERE lname_pinyin = 'wang'; --用了索引
SELECT * FROM employee WHERE fname_pinyin = 'xiao'; -- 没有使用索引
SELECT * FROM employee WHERE lname_pinyin = 'wang' OR fname_pinyin =
'xiao'; -- 没有使用索引
复合索引
[sql]
CREATE INDEX idx_pinyin ON employee( lname_pinyin, fname_pinyin);
SHOW INDEX FROM employee\G
唯一性索引
使用 UNIQUE 关键字,来创建不可重复的索引,称为:唯一性索引。
对特定列创建唯一性索引,相当于对该列追加了唯一性制约。
创建唯一性索引的时候,如果对象列中,已经含有重复数据,则:创建失败,
报错。
创建成功后,如果,插入重复数据,则:插入失败,报错。
指定多个列,来创建唯一性索引,只要,这些列的组合数据不重复,就可以创
建成功。
索引,顾名思义,是为了检索的便捷性。因为索引需要单独去维护,所以对于
数据库的删除,插入,更新操作有影响,批量的操作,速度就会很慢,感觉就
会很明显。
对于in,rule优化器选择的内查询的结果作为驱动表来进行nest loops连接,
所以当内查询的结果集比较小的时候,这个in的效率还是比较高的。
对于exists,则是利用外查询表的全表扫描结果集过滤内查询的结果集,当外
查询的表比较大的时候,相对效率比较低
1.建表的时候。应尽量建立主键,根据主键查询数据;
2.大数据表删除,用truncate table代替delete。
3.合理使用索引,在OLTP应用中一张表的索引不要太多。组合索引的列顺序尽
量与查询条件列顺序保持一致;对于数据操作频繁的表,索引需要定期重建,
以减少失效的索引和碎片。
4.查询尽量用确定的列名,少用*号
5.使用where条件命中索引
6.将能过滤大量数据的where条件放到where条件集合的最前门
7.对于大量的字符匹配,要使用exist,用in拼接的话容易造成sql被无端截取
二。数据库表关联:
分了内连接和外连接。内连接也就是相等连接
外连接分为左外连接和右外连接。
1. LEFT OUTER JOIN:左外关联
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
LEFT OUTER JOIN departments d
ON (e.department_id = d.department_id);
等价于
SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id=d.department_id(+);
结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的
员工记录
2. RIGHT OUTER JOIN:右外关联
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id);
等价于
SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id(+)=d.department_id;
结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。
3. FULL OUTER JOIN:全外关联
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
FULL OUTER JOIN departments d
ON (e.department_id = d.department_id);
结果为:所有员工及对应部门的记录,包括没有对应部门编号 department_id
的员工记录和没有任何员工的部门记录。
9. 事务:是一系列的数据库操作,是数据库应用的基本逻辑单位。事务性质:
原子性。即不可分割性,事务要么全部被执行,要么就全部不被执行。
一致性或可串性。事务的执行使得数据库从一种正确状态转换成另一种正确
状态
隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任
何其他事务,
持久性。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交
后有了其他故障,事务的处理结果也会得到保存。
存储过程:存储过程就是编译好了的一些sql语句。因为SQL语句已经预编绎过
了,因此运行的速度比较快。
GRANT (Select,delete,…) ON (对象) TO USER_NAME [WITH GRANT
OPTION];//授权
REVOKE (权限表) ON(对象) FROM USER_NAME [WITH REVOKE OPTION] //撤权
Create UNIQUE INDEX index_name ON TableName(col_name);//建索引
INSERT INTO tablename {column1,column2,…} values(exp1,exp2,…);//插
入
INSERT INTO Viewname {column1,column2,…} values(exp1,exp2,…);//插入
视图实际影响表
UPDATE tablename SET name=’zang 3’,email=‘wew’ condition;//更新
数据
数据库索引类似于书的目录,主要用于提高查询效率,也就是按条件查询的时
候,先查询索引,再通过索引找到相关的数据,索引相当于记录了对某个关键
词,指定到不同的文件,或者文件里的不同位置,当然索引自身也是通过文件
来保存的
加了索引后,也不能保证在每次检索时都会使用列索引。
如果, SQL 检索语句编写不当,就无法使用索引。
1、LIKE 运算符,进行模糊检索时,只能在前方一致的检索时,才能使用索引
。
以下写法,索引不会被使用。
[sql]
SELECT * FROM employee WHERE lname_pinyin LIKE '%w%';
SELECT * FROM employee WHERE lname_pinyin LIKE '%w';
2、使用 IS NOT NULL 、 <> 的场合,也不会使用索引。如下:
[sql]
SELECT * FROM employee WHERE lname_pinyin IS NOT NULL;
SELECT * FROM employee WHERE lname_pinyin <> 'wang';
3、对列使用了运算或者函数的情况下,不会使用索引,如下:
[sql]
SELECT * FROM employee WHERE YEAR(birth) = '1980'; -- 不使用索引
SELECT * FROM employee WHERE birth >= '1980-01-01' AND birth <=
'1980-12-31'; --使用了索引
4、复合索引的第一列,没有包含在 WHERE 条件语句中,如下:
[sql]
CREATE INDEX idx_pinyin ON employee(lname_pinyin, fname_pinyin);
SELECT * FROM employee WHERE lname_pinyin = 'wang' AND fname_pinyin =
'xiao'; --用了索引
SELECT * FROM employee WHERE lname_pinyin = 'wang'; --用了索引
SELECT * FROM employee WHERE fname_pinyin = 'xiao'; -- 没有使用索引
SELECT * FROM employee WHERE lname_pinyin = 'wang' OR fname_pinyin =
'xiao'; -- 没有使用索引
复合索引
[sql]
CREATE INDEX idx_pinyin ON employee( lname_pinyin, fname_pinyin);
SHOW INDEX FROM employee\G
唯一性索引
使用 UNIQUE 关键字,来创建不可重复的索引,称为:唯一性索引。
对特定列创建唯一性索引,相当于对该列追加了唯一性制约。
创建唯一性索引的时候,如果对象列中,已经含有重复数据,则:创建失败,
报错。
创建成功后,如果,插入重复数据,则:插入失败,报错。
指定多个列,来创建唯一性索引,只要,这些列的组合数据不重复,就可以创
建成功。
索引,顾名思义,是为了检索的便捷性。因为索引需要单独去维护,所以对于
数据库的删除,插入,更新操作有影响,批量的操作,速度就会很慢,感觉就
会很明显。
对于in,rule优化器选择的内查询的结果作为驱动表来进行nest loops连接,
所以当内查询的结果集比较小的时候,这个in的效率还是比较高的。
对于exists,则是利用外查询表的全表扫描结果集过滤内查询的结果集,当外
查询的表比较大的时候,相对效率比较低
发表评论
-
left join多个表
2013-05-29 13:14 1625A left join b on a.id=b.id系统会先 ... -
数据库优化
2013-05-14 14:52 965本文主要从大型数据库O ... -
oracle的union和union all的区别
2013-03-29 09:39 973union和union all的区别是,union会自动压缩多 ... -
数据库5种约束
2013-03-27 12:25 1042约束用于确保数据库数满足业务规则。 约束包括: ... -
oracle 笔记整理
2013-01-03 19:43 890SQL> select length('啊'),leng ... -
Oracle除去换行符
2012-12-20 18:03 1061很多数据存进数据库后,可能需要将整条数据取出,并用特殊符号分割 ... -
oracle group by
2012-11-23 14:57 1059在select 语句中使用group by关键字进行分组,然后 ... -
oracle sql 分页
2012-11-13 14:30 880hibernate官方提供的hql语句功能确实足够强大,但是面 ... -
plsql
2012-11-10 22:23 954-- 日期格式条件select * from abc whe ...
相关推荐
数据库常见面试题型总结是数据库方面常见面试题型的总结,涵盖了数据库语句、SQL 优化、Web 相关知识点等。以下是对标题和描述中所说的知识点的详细说明: 一、IN 和 EXIST 的区别 IN 和 EXISTS 是两种常见的...
以下是一些Oracle数据库常见的面试题及其详解: 1. **Oracle数据类型**:了解Oracle支持的数据类型,如VARCHAR2、NUMBER、DATE、BLOB等,以及它们的应用场景。 2. **SQL基础**:掌握基本的SQL语句,如SELECT、...
"数据库面试知识点汇总" 数据库面试知识点汇总是对数据库方方面面的总结,涵盖了数据库设计、数据库范式、索引、数据库性能优化等方面的知识点。下面是对这些知识点的详细解释: 一、数据库设计 数据库设计是指对...
以下是对文件“数据库工程师常见面试题.pdf”中提到的各个知识点的详细解释: 1. 关于groupby和orderby操作导致查询变慢的原因,主要是因为这两个操作在处理大量数据时,需要创建临时表以暂存处理结果。由于临时表...
本文将介绍一些SQL数据库的常见面试题,它们不仅覆盖了基础知识点,也包含了一些实际操作中的应用技巧。 首先,了解SQL数据库的基本概念是非常重要的。SQL是用于访问和操作数据库的标准编程语言。它允许用户定义...
数据库笔试题及答案涵盖了...这些题目覆盖了数据库基础、数据结构、编程原理、数据库设计和SQL等多个方面,是数据库工程师和程序员面试的常见测试点。理解和掌握这些知识点对于在IT行业中从事数据库相关工作至关重要。
以下是一些数据库常见笔试和面试题目的详细解析,旨在帮助你更好地准备应聘过程。 1. **数据库基本概念** - **RDBMS(关系型数据库管理系统)**:如MySQL、Oracle、SQL Server等,它们基于关系模型,以表格形式...
以下是一些常见的数据库面试问题及答案概览: 1. **数据模型**: - **概念模型**:用于描述业务对象及其关系,如实体-关系(E-R)模型。 - **逻辑模型**:如关系模型,是数据库管理系统实际使用的数据结构,如SQL...
数据库中以表为组织单位存储数据。 表类似我们的Java类,每个字段都有对应的数据类型。 那么用我们熟悉的java程序来与关系型数据对比,就会发现以下对应关系。 类----------表 类中属性----------表中字段 对象...
MySQL 数据库基础面试知识点 本文档总结了 MySQL 数据库的基础知识点,包括数据库分类、数据类型、数据库基本操作和数据表基本操作等知识点。 数据库分类 MySQL 数据库可以分为四大类:DDL(数据定义语言)、DML...
数据库是信息技术领域中的...这些知识点涵盖了数据库面试的大部分内容,求职者需要深入理解和实践,才能在面试中展现出扎实的数据库功底。通过解答这些面试题,不仅可以提升技能,也能为未来的职业生涯打下坚实的基础。
数据库面试题涵盖了数据库基础知识、数据结构、算法、面向对象编程、软件工程以及特定数据库系统(如Visual FoxPro和SQL)的使用等多...这些知识点是数据库面试中常见的考察点,对于理解和解答数据库相关问题至关重要。
### SQL数据库常见面试题解析 #### 1. MSSQL Server数据库信息系统的输出是什么? - A. Asp_dbhelp - B. sp_db - C. sp_help - D. sp_helpdb **正确答案:** D. sp_helpdb - **解析:** 在SQL Server中,`sp_...
数据库面试笔试常见知识点 数据库是一门广泛应用于实践的技术,而对数据库的理解和掌握是IT行业中不可或缺的一部分。面对数据库面试笔试,需要具备扎实的基础知识和实践经验。下面是数据库面试笔试中常见的知识点:...
这些是数据库面试中常见的一些基础知识点,对于面试者来说,还需要掌握索引、事务、视图、触发器、性能优化等方面的知识。理解数据库设计原则,如第三范式(3NF),以及如何设计高效的数据库架构也是至关重要的。...
以上只是部分数据库面试可能涉及的问题,深入理解和实践这些知识点将有助于你在面试中表现出色。同时,不断学习和跟踪数据库技术的新发展,如NewSQL、内存数据库等,也是提升自己竞争力的关键。
以下是一些常见的数据库面试题及其解析,这些题目涵盖了数据库的基础概念、高级特性和最佳实践。 1. **数据连接池的工作机制** 数据连接池是管理数据库连接的一种机制,用于优化数据库应用性能。它在J2EE服务器...
使用场景及目标:①加深对数据库基础知识的理解,提升数据库设计和查询优化能力;②为数据库相关的技术岗位面试做准备,增强自我竞争力。 其他说明:本文档不仅包含了详细的定义解答,还提供了具体的操作案例,有助...
以下是一些常见的知识点,主要涉及Oracle自带的表、SQL函数以及聚合函数。 首先,Oracle数据库中有一些预定义的表,如`emp`和`dept`,它们经常用于示例和练习。`emp`表包含了员工的相关信息,例如`empno`是员工编号...