处理百万级以上的数据提高查询速度的方法:

1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。

2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:

select id from t where num is null

可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:

select id from t where num=0

4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:

select id from t where num=10 or num=20

可以这样查询:

select id from t where num=10

union all

select id from t where num=20

5.下面的查询也将导致全表扫描:(不能前置百分号)

select id from t where name like ‘%abc%’

若要提高效率,可以考虑全文检索。

6.in 和 not in 也要慎用,否则会导致全表扫描,如:

select id from t where num in(1,2,3)

对于连续的数值,能用 between 就不要用 in 了:

select id from t where num between 1 and 3

8.应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如:

select id from t where num/2=100

应改为:

select id from t where num=100*2

9.应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。如:

select id from t where substring(name,1,3)=’abc’–name以abc开头的id

select id from t where datediff(day,createdate,’2005-11-30′)=0–’2005-11-30′生成的id

应改为:

select id from t where name like ‘abc%’

select id from t where createdate>=’2005-11-30′ and createdate

10.不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。

11.在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使 用,并且应尽可能的让字段顺序与索引顺序相一致。

12.不要写一些没有意义的查询,如需要生成一个空表结构:

select col1,col2 into #t from t where 1=0

这类代码不会返回任何结果集,但是会消耗系统资源的,应改成这样:

create table #t(…)

13.很多时候用 exists 代替 in 是一个好的选择:

select num from a where num in(select num from b)

用下面的语句替换:

select num from a where exists(select 1 from b where num=a.num)

14.并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引,如一表中有字段 sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。

15.索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有 必要。

16.应尽可能的避免更新 clustered 索引数据列,因为 clustered 索引数据列的顺序就是表记录的物理存储顺序,一旦该列值改变将导致整个表记录的顺序的调整,会耗费相当大的资源。若应用系统需要频繁更新 clustered 索引数据列,那么需要考虑是否应将该索引建为 clustered 索引。

17.尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接时会 逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。

18.尽可能的使用 varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。

19.任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。

20.尽量使用表变量来代替临时表。如果表变量包含大量数据,请注意索引非常有限(只有主键索引)。

21.避免频繁创建和删除临时表,以减少系统表资源的消耗。

22.临时表并不是不可使用,适当地

lambda 查询大量数据速度很慢_处理百万级以上的数据提高查询速度的方法:相关推荐

  1. lambda 查询大量数据速度很慢_处理百万级以上的数据提高查询速度的方法

    处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考 ...

  2. sublime package control 速度很慢_可怜的ACRH17,它的USB3.0速度被华硕压制了!

    华硕ACRH17,2.4G最高支持400Mbps连接速率,5G最高支持1733Mbps, 在无线速率的计算上,为了避免让ac66u b1.ac68u.ac1900p这些的竞争,故意把ACRH17的速率 ...

  3. 测试mysql的查询速度很慢_求助,mysql统计实时数据信息的,查询速度很慢?

    CREATE TABLE `action_log` ( `pkid` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键Id', `enterpr ...

  4. 百万数据php7取出循环_用php处理百万级以上的数据

    用php处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描, ...

  5. 处理百万级以上的数据提高查询速度的方法

    1.应尽量避免在where子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索 ...

  6. 查询分析300万笔记录_给你100万条数据的一张表,你将如何查询优化?

    1.两种查询引擎查询速度(myIsam 引擎) InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行. ...

  7. vuex存储什么数据_【存储知识小讲堂系列】为什么数据隔离很重要_热点新闻-新闻频道-中文科技资讯...

    我们常说 备份数据就像是"后悔药" 即使被病毒攻击 也能通过恢复的方式 让你的业务不受影响 可随着如今网络安全形式的复杂化 这样"简单"的想法 已经越来越不被允 ...

  8. Oracle-处理百万级以上的数据查询提高效率的办法

    1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉 ...

  9. mysql查询01课程比02课程_小菜菜mysql练习解读分析2——查询存在 01 课程但可能不存在 02 课程的情况(不存在时显示为 null )...

    "查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )" --翻译为:课程表里面,存在01的信息,未必满 ...

最新文章

  1. 影响Python运行效率的因素有哪些?
  2. JAVA不使用POI给Word文档添加水印
  3. 文巾解题 176. 第二高的薪水
  4. Java基础面试题与答案
  5. c语言延时函数delay延时一秒_IMX6UL裸机实现C语言LED实验
  6. 柳氏管理学:感恩是双向的,强调单方面都是别有用心
  7. PLC编程语言入门,常用指令集汇总分享
  8. eclipse插件下载最新地址
  9. note2 android4.3,三星N7100/note2官方4.3原版线刷版N7100ZCUENB1
  10. 黑马Java基础笔记大纲
  11. 数字图像处理_05_(图像锐化与边缘检测——Premittt算子、Roberts算子、Sobel算子、Scharr算子、Laplacian算子、LoG算子、Canny算子)
  12. android模拟器 分辨率,Android模拟器各个皮肤的分辨率
  13. 云栖大会 | Greenplum 6.0内核优化解读和7.0展望
  14. 呼伦贝尔草原行(5日自由行)
  15. 飞机的纵•横向运动简化数学模型及控制系统设计
  16. 手机电池更换_红米note7pro电池更换实例注意事项
  17. CentOS 7 关闭 swap 分区
  18. C,C++,Python实现兔子生兔子问题
  19. oracle 判断重复次数,sql 查询 某字段 重复次数 最多的记录
  20. JAVA特点优点以及环境

热门文章

  1. Hashtable中的get(key)方法,为什么进行hash 0x7FFFFFFF
  2. java 伪装浏览器_[Java教程]伪装虽易测试不易之微信浏览器
  3. Excel如何批量给混合文本中的数字标记不同颜色
  4. Deepin20.8Idea2022.3中文输入法不跟随光标解决办法
  5. Umeng第三方登录
  6. 程序员转行记:当上大老板、迎娶白富美还全款买了房
  7. Flutter局部刷新
  8. KDD99数据集标签详解
  9. CUDA---从入门到升华
  10. redhat linux 硬盘挂载方法!!!,Redhat Linux 硬盘挂载方法!!!