数据库优化技巧

发布时间:2025-05-22 11:56

理解数据库原理,优化SQL查询 #生活技巧# #编程开发#

一、数据库语句优化
1.分页的sql语句查询语句
(1).查询数据量小时适用
    select * from (select d.*,rownum rn from dept d where rownum<=5) where rn>=1;
(2).速度较稳定,推荐使用
    select * from( select row_number()over(order by deptno)rn,d.* from dept d)
    where rn between 1 and 5;

(3).提示:(SQL ROW_NUMBER() OVER函数的基本用法用法)

语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后的没条xlh记录返回一个序号。 
示例: 
xlh           row_num 
1700              1 
1500              2 
1085              3 
710               4

row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

实例:

初始化数据

create table employee (empid int ,deptid int ,salary decimal(10,2))
insert into employee values(1,10,5500.00)
insert into employee values(2,10,4500.00)
insert into employee values(3,20,1900.00)
insert into employee values(4,20,4800.00)
insert into employee values(5,40,6500.00)
insert into employee values(6,40,14500.00)
insert into employee values(7,40,44500.00)
insert into employee values(8,50,6500.00)
insert into employee values(9,50,7500.00)

数据显示为

empid       deptid      salary
----------- ----------- ---------------------------------------
1           10          5500.00
2           10          4500.00
3           20          1900.00
4           20          4800.00
5           40          6500.00
6           40          14500.00
7           40          44500.00
8           50          6500.00
9           50          7500.00

需求:根据部门分组,显示每个部门的工资等级

预期结果:

empid       deptid      salary                                  rank
----------- ----------- --------------------------------------- --------------------
1           10          5500.00                                 1
2           10          4500.00                                 2
4           20          4800.00                                 1
3           20          1900.00                                 2
7           40          44500.00                                1
6           40          14500.00                                2
5           40          6500.00                                 3
9           50          7500.00                                 1
8           50          6500.00                                 2

SQL脚本:

SELECT *, Row_Number() OVER (partition by deptid ORDER BY salary desc) rank FROM employee
2.数据库性能优化
(1).合理使用索引(索引建好后,由oracle自己来决定是不是使用该索引,并不需要手动来调用,不过在oracle中,也可以用hint来指明调用某个索引.)
   ①.创建索引的根本目的是:提高查询效率。
     使用原则如下:
     1.在条件表达式中经常用到的不同值较多的列上建立索引。
     2.在不同值少的列上不要创建索引或位图索引。
      比如:在员工表的【性别】列上只有“男”或者“女”两个不同值,如果建立索引,不但不会提高查询效率,反而会降低更新速度。
     3.在经常进行连接,但是没有指定为外键的列上建立索引。
     4.在频繁进行排序或分组的列上建立索引,如果待排序的列有多个,可以建立组合做引。
      如:order by D,E那要注意:在建立索引时D列和E列和排序后面的顺序要相同。
     5.如果条件表达式中经常对某个列应用某个函数后指定查询条件,则应建立函数索引。
(2).避免或者简化排序
(3).消除对大表的扫描
(4).避免困难的通配符的匹配
(5).调整子查询的性能
(6).EXISTS和IN运算符
(7).通过索引提高查询效率
(8).分页查询

网址:数据库优化技巧 https://www.yuejiaxmz.com/news/view/1009623

相关内容

数据库与前端优化技巧
数据库操作与系统优化技巧
Oracle数据库日常管理与维护技巧:提升SQL性能与数据安全
MySQL上亿数据查询优化:实践与技巧
电商系统怎么优化性能,如何优化数据库性能
数据驱动的智库知识服务流程优化
SQL Server数据库性能优化(一)之 优化SQL 语句
PHP 框架性能优化中的数据库查询优化策略
数据库一般会采取什么样的优化方法?
优化 Android 数据使用的技巧和技巧

随便看看