关于sql优化的一个小总结

1.数据量大的时候,可以分多次查询
2.有些数据的存储可以分主次表,此表存一些不常用的数据
3.union all 比union效率要高
4.尽量不要用distinct
5.不返回不需要的行和列
6.根据条件加索引
7.可以把like用法换成截取字符串作比较
8.检索的时候可以把页数也当做条件(每次查询拿出最大的id),加载下一页的时候从最大的id开始
9.尽量不要临时表,table变量,子查询、case等
10.用profiler来跟踪查询,得出查询所需时间,找出sql问题所在
11.视图尽量少用
12.没必要时不要用order by

关于sql优化的一个小总结,布布扣,bubuko.com

时间: 2024-10-09 08:10:49

关于sql优化的一个小总结的相关文章

Unity物理优化的一个小问题

为了性能优化,Unity会计算场景中所有的体积,包括静态的碰撞器并把 这些信息存在“Cash”中,对于静止物体而言,有了这些信息,就不需要 再每帧重新进行计算了.若移动,拉伸后或旋转了静态物体时,就是对其 静态碰撞器进行了相应的操作,Unity会再次重新计算静止的碰撞器,再 次上传到“Cash”中.重新计算“Cash”会占用资源.动态物体可以随意 移动,拉伸后旋转,而Unity不会重新上传任何碰撞体积到“Cash”中.在Unity中,我们移动碰撞器,我们只需要告诉Unity,哪些物体是动态的 .

索引与sql优化问题汇总

各位亲爱的云友, 非常感谢大家踊跃参加DBA专家门诊一期:索引与sql优化,很多云友都提出了自己的问题,门诊主任医师玄惭对大家提的问题一一作了解答.现已整理好这些问题,分享在此,欢迎来拿,绝对干货! 篇幅较长,耐心细看! 我们将赠送每位提问者每人一本凌云杂志第四期,请各位以论坛短消息形式将姓名.电话.地址发送给管理员xiaofanqie. 啊里新人(Q1):索引我一般都是只有主键,这玩意儿,是不是越少越好? 玄惭(A1):在日常的业务开发中,常见使用到索引的地方大概有两类: 第一类.做业务约束需

干货分享:DBA专家门诊一期:索引与sql优化问题汇总

各位亲爱的云友, 非常感谢大家踊跃参加DBA专家门诊一期:索引与sql优化,很多云友都提出了自己的问题,门诊主任医师玄惭对大家提的问题一一作了解答.现已整理好这些问题,分享在此,欢迎来拿,绝对干货! 篇幅较长,耐心细看! 我们将赠送每位提问者每人一本凌云杂志第四期,请各位以论坛短消息形式将姓名.电话.地址发送给管理员xiaofanqie. 啊里新人(Q1):索引我一般都是只有主键,这玩意儿,是不是越少越好? 玄惭(A1):在日常的业务开发中,常见使用到索引的地方大概有两类: 第一类.做业务约束需

关于项目优化的一些小技巧

1.若项目能编译成功,但有错误提示时,可以用清理缓存的方式解决. 就是把/Users/用户名/Library/Developer/Xcode/DerivedData文件全部删除.但要注意的是删除前要关闭项目,否则该问题仍存在. 2.利用NSData读取文件 NSData读取文件时分两种形式,通过网络读取和本地读取.二者不能混淆,否则会导致nil问题 //读取本地文件 NSData *dataTemp = [NSData dataWithContentsOfFile:@"/Volumes/IMG_

SQL优化的那些事儿

系列主题吧,这篇随笔,主要是记录下LZ日常觉得有利于SQL优化的一些小细节 1. like,开始不是模糊查询的时候可以利用索引查询,即 like 第一个关键词是具体的,不是"%" 1 ## 不可利用索引,全局 ,不推荐 2 EXPLAIN SELECT * from table_a WHERE COLUMN_a like '%关键字%'; 3 EXPLAIN SELECT * from table_a WHERE COLUMN_a like '%关键字'; 4 5 ## 可利用索引 ,

SQL优化基础 使用索引(一个小例子)

按照本文操作和体会,会对sql优化有个基本最简单的了解,其他深入还需要更多资料和实践的学习: 1. 建表: 复制代码 代码如下: create table site_user ( id int IDENTITY(1,1) PRIMARY KEY, [name] varchar(20), code varchar(20), date datetime ) 2. 插入8万条数据 复制代码 代码如下: declare @m int set @m=1 while @m<80000 begin INSER

从一个小例子认识SQL游标

原文:从一个小例子认识SQL游标 1    什么是游标: 关系数据库中的操作会对整个行集起作用. 例如,由 SELECT 语句返回的行集包括满足该语句的 WHERE 子句中条件的所有行. 这种由语句返回的完整行集称为结果集. 应用程序,特别是交互式联机应用程序,并不总能将整个结果集作为一个单元来有效地处理. 这些应用程序需要一种机制以便每次处理一行或一部分行. 游标就是提供这种机制的对结果集的一种扩展. 游标通过以下方式来扩展结果处理: 允许定位在结果集的特定行. 从结果集的当前位置检索一行或一

记录一个sql优化后大大提高查询效率的情形

众所周知,sql写得怎么样,对于查询效率的影响是颇大的.下面看一个比较普通的查询: 假设一张表有event_date和event_time2个字段分别表示日期和时间,现在直接给你一个时间字符串,这个时间字符串是“日期+时间”的组合,现在需要按时间范围过滤出一部分数据.如果你不转弯的话,很有可能你会按照惯性思维使用concat(event_date, event_time)连接函数,如: SELECT A, MAX(B) AS B,SUBSTR(CONCAT(event_date, event_t

SQL Server 中关于 @@error 的一个小误区

原文:SQL Server 中关于 @@error 的一个小误区 在SQL Server中,我常常会看到有些前辈这样写: if(@@error<>0) ROLLBACK TRANSACTION T else COMMIT TRANSACTION T 一开始,我看见别人这么写,我就想当然的以为它只是个计数器,每当检测到一处错误时,@@error的值+1,不过就因为这个理所当然,所以杯具了... 实际上,它并不是一个计数器,它是一个动态的值,动态的标识最后一条SQL命令执行的结果,如果成功则为0,