1.按姓氏笔画排序:
Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as
2.数据库加密:
select encrypt('原始密码')
select pwdencrypt('原始密码')
select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 encrypt('原始密码')
select pwdencrypt('原始密码')
select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同
3.取回表中字段:
declare @list varchar(1000),@sql nvarchar(1000)
select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name='表A'
set @sql='select '+right(@list,len(@list)-1)+' from 表A'
exec (@sql)
4.查看硬盘分区:
EXEC master..xp_fixeddrives
5.比较A,B表是否相等:
if (select checksum_agg(binary_checksum(*)) from A)
    =
   (select checksum_agg(binary_checksum(*)) from B)
print '相等'
else
print '不相等'
6.杀掉所有的事件探察器进程:
DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master.dbo.sysprocesses
WHERE program_name IN('SQL profiler',N'SQL 事件探查器')
EXEC sp_msforeach_worker '?'
7.记录搜索:
开头到N条记录
Select Top N * From 表
-------------------------------
N到M条记录(要有主索引ID)
Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID  Desc
----------------------------------
N到结尾记录
Select Top N * From 表 Order by ID Desc
8.如何修改数据库的名称:
sp_renamedb 'old_name', 'new_name' 
9:获取当前数据库中的所有用户表
select Name from sysobjects where xtype='u' and status>=0
10:获取某一个表的所有字段
select name from syscolumns where id=object_id('表名')
11:查看与某一个表相关的视图、存储过程、函数
select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'
12:查看当前数据库中所有存储过程
select name as 存储过程名称 from sysobjects where xtype='P'
13:查询用户创建的所有数据库
select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')
或者
select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01
14:查询某一个表的字段和数据类型
select column_name,data_type from information_schema.columns
where table_name = '表名'
[n].[标题]:
Select * From TableName Order By CustomerName 
[n].[标题]:
Select * From TableName Order By CustomerName 
--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
Sql优化是一项复杂的工作,以下的一些基本原则是本人看书时所记录下来的,很明确且没什么废话:
1. 索引的使用:
(1).当插入的数据为数据表中的记录数量的10%以上,首先需要删除该表的索引来提高数据的插入效率,当数据插入后,再建立索引。
(2).避免在索引列上使用函数或计算,在where子句中,如果索引是函数的一部分,优化器将不再使用索引而使用全表扫描。如:
低效:select * from dept where sal*12 >2500;
高效:select * from dept where sal>2500/12;
(3).避免在索引列上使用not和 “!=”,索引只能告诉什么存在于表中,而不能告诉什么不存在于表中,当数据库遇到not 和 “!=”时,就会停止使用索引而去执行全表扫描。
(4).索引列上>=代替>
 低效:select * from emp where deptno > 3
 高效:select * from emp where deptno >=4
两者的区别在于,前者dbms将直接跳到第一个deptno等于4的记录,而后者将首先定位到deptno等于3的记录并且向前扫描到第一个deptno大于3的。
(5).非要对一个使用函数的列启用索引,基于函数的索引是一个较好的方案。
2. 游标的使用:
   当在海量的数据表中进行数据的删除、更新、插入操作时,用游标处理的效率是最慢的,但是游标又是必不可少的,所以正确使用游标十分重要:
   (1). 在数据抽取的源表中使用时间戳,这样每天的维表数据维护只针对更新日期为最新时间的数据来进行,大大减少需要维护的数据记录数。
   (2). 在insert和update维表时都加上一个条件来过滤维表中已经存在的记录,例如:
insert into dim_customer select * from ods_customer where ods_customer.code not exists (dim_customer.code)
 ods_customer为数据源表。dim_customer为维表。
   (3). 使用显式的游标,因为隐式的游标将会执行两次操作,第一次检索记录,第二次检查too many rows这个exception,而显式游标不执行第二次操作。
3. 据抽取和上载时的sql优化:
(1). Where 子句中的连接顺序:
oracle采用自下而上的顺序解析where子句,根据这个原理,表之间的连接必须写在其他where条件之前,那些可以过滤掉大量记录的条件必须写在where子句的末尾。如:
低效:select * from emp e where sal>5000 and job = ‘manager’ and 25<(select count (*) from emp where mgr=e.empno);
高效:select * from emp e where 25<(select count(*) from emp where mgr=e.empno) and sal>5000 and job=’manager’;
   (2). 删除全表时,用truncate 替代 delete,同时注意truncate只能在删除全表时适用,因为truncate是ddl而不是dml。
   (3). 尽量多使用commit
只要有可能就在程序中对每个delete,insert,update操作尽量多使用commit,这样系统性能会因为commit所释放的资源而大大提高。
   (4). 用exists替代in ,可以提高查询的效率。
   (5). 用not exists 替代 not in
   (6). 优化group by
提高group by语句的效率,可以将不需要的记录在group by之前过滤掉。如:
低效:select job, avg(sal) from emp group by job having job = ‘president’ or job=’manager’;
高效: select job, avg(sal) from emp having job=’president’ or job=’manager’ group by job;
   (7). 有条件的使用union-all 替代 union:这样做排序就不必要了,效率会提高3到5倍。
   (8). 分离表和索引
       总是将你的表和索引建立在不同的表空间内,决不要将不属于oracle内部系统的对象存放到system表空间内。同时确保数据表空间和索引表空间置于不同的硬盘控制卡控制的硬盘上。

特殊SQL语句及优化原则相关推荐

  1. 52条SQL语句性能优化策略

    本文会提到 52 条 SQL 语句性能优化策略. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 WHERE 及 ORDER BY 涉及的列上建立索引. 2.应尽量避免在 WHERE 子句中对字 ...

  2. SQL语句性能调整原则

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统 ...

  3. mysql 排序字段是否需要建索引_MySQL索引详解(优缺点,何时需要/不需要创建索引,索引及sql语句的优化)...

    一.什么是索引? 索引是对数据库表中的一列或多列值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息. 二.索引的作用? 索引相当于图书上的目录,可以根据目录上的页码快速找到所需的内容,提高 ...

  4. sql加上唯一索引后批量插入_阿里大佬总结的52条SQL语句性能优化策略,建议收藏...

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 cnblogs.com/SimpleWu/p/9929043.html 推荐:h ...

  5. 如何对 SQL 语句进行优化

    当我们在设计一个项目时,开发阶段的业务数据量相对较少,一些 SQL 语句的执行效率对程序运行效率的影响不太明显,所以对于开发或运维人员来说不会注重对 SQL 语句的优化.但是,随着时间的积累,业务数据 ...

  6. sql语句的优化方式

    大部分我们在刚从事后端工作时写的sql语句主要注重结果,并没有对他的执行效率进行考虑,只是单纯的完成自己手头上的任务,毕竟开发环境下表中的数据量较少,执行起来也很快,并没有察觉到自己写的sql语句的执 ...

  7. 【MySQL】47 条SQL语句性能优化策略

    本文会提到 47 条 SQL 语句性能优化策略. 1. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 WHERE 及 ORDER BY 涉及的列上建立索引. 2. 应尽量避免在 WHERE 子句中 ...

  8. 52条SQL语句性能优化策略,建议收藏

    点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 Promise yourself to be so strong ...

  9. 52条 SQL 语句性能优化策略全面解析,你知道多少种?建议收藏!

    点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 Don't always in the memories of t ...

最新文章

  1. matlab外部接口简介
  2. 精灵图 html为什么会变大,[html] 第128天 精灵图和base64如何选择呢?
  3. 基于matlab的对流层散射信道特性仿真,对流层散射信道建模和FPGA实现
  4. maven中使用junit老是找不到包
  5. vbs修改office设置_E002 Ruby 写入数据 【 =gt; Office 】
  6. fabrication的拦截器Interceptors简介
  7. 开源组件NanUI一周年 - 使用HTML/CSS/JS来构建.Net Winform应用程序界面
  8. 复杂一点的二叉树递归
  9. VDI序曲八 网关与VDI发布
  10. mysql主从复制原理的理解,MySQL主从复制以及原理好理解)
  11. foreign key
  12. 【信息融合】基于BP神经网络和DS 证据理论实现不确定性信息融合问题附matlab代码
  13. Studio 3T 破解 mogodb
  14. linux终端反引号怎么使用,Linux 反引号 的作用
  15. matlab绘制香农定理曲线,基于matla对香农公式仿真.doc
  16. 第6章 垃圾邮件识别
  17. 鸢尾花分类——神经网络详解
  18. sql 查询及格率优秀率
  19. unity SteamVR利用手柄合理移动
  20. eve计算机配置要求,玩EVE的电脑应该怎么配置?

热门文章

  1. 如何启用计算机上的无线网络连接,告诉大家win10无线网络连接如何打开
  2. apache 安装后默认主页无法打开_CAD教程:CAD软件打开图纸后钢筋符号无法读取的解决办法...
  3. C++:名字空间的使用
  4. Python Qt GUI设计:QMdiArea和QMdiSubWindow类实现多文档界面(拓展篇—3)
  5. 有源晶振和无源晶振的区别
  6. Ubuntu命令行连接wifi热点
  7. 机器学习(11)线性回归(1)理论:损失函数(含最小二乘法)、正规方程、梯度下降、回归性能评估(均方差)
  8. 数字图像处理——第六章 彩色图像处理
  9. C++中模板template typename T
  10. 隐藏原生select下拉框的向下箭头▼