精华内容
下载资源
问答
  • 为了提高数据的查询效率
    千次阅读
    2019-07-04 17:54:40

    从数据库设计方面考虑:

    建立索引
    分区(MysQL,比如按时间分区)
    尽量使用固定长度的字段
    限制字段长度
    从数据库I/O方面:

    增加缓冲区
    如果涉及表的级联,不同的表存储在不同的硬盘上,以增加I/O读取的速度
    从SQL语句方面:

    优化SQL语句,减少比较的次数
    限制返回的条目数(MySQL中用的limit)
    从Java代码方面:

    如果反复使用的查询,使用preparedStament减少查询的次数
    使用批量处理
     

    更多相关内容
  • 怎样提高数据库查询效率

    千次阅读 2019-05-13 09:50:03
    主要通过三种途径提高数据库查询效率:1.SQL的性能优化,2.数据库的性能优化,3.查询优化 1.SQL的性能优化 SQL语句是用户访问关系数据库中数据的唯一方法,通常在一个关系数据库上,服务器的SQL进程会使用该服务器...

    目前可以说大多数程序的所耗的时间大部分在于数据库查询中。打个比方,程序内部代码跑1秒,数据库查询数据需要10秒,maybe夸大了。

    主要通过三种途径提高数据库查询效率:1.SQL的性能优化,2.数据库的性能优化,3.查询优化

    1.SQL的性能优化
     SQL语句是用户访问关系数据库中数据的唯一方法,通常在一个关系数据库上,服务器的SQL进程会使用该服务器的60%~90%的资源,大部分数据库的效率的问题都是由于SQL语句编写不善引起的,所以SQL语句的性能优化十分重要。
    为了编写出高效的SQL语句,首先应按照一定的具体规范来编写SQL语句,Database administrator 都需要收集和整理一份SQL编码规范。其次实在真实数据库上对这些SQL语句进行性能测试和跟踪并不断调整,到达最优以后才正式上线运行。最后需要强调的是,随着数据量的变化和数据库版本升级后,往往会导致部分SQL性能下降,所以对SQL的跟踪优化是Database administrator的一项持续不断的工作。

     

    2.数据库的性能优化
    Database System 是一组程序作用在数据文件上对外提供服务,所以其本身的性能优化也十分重要,对其的优化工作主要是相应的参数调整。
    (1) 通过见识database system的内存对象,获得系统性能指标,发现系统的性能缺陷以及原因
    (2) 针对导致系统性能缺陷的原因,进行相应的参数调整(如增加数据缓存区的大小)
    (3) 跟踪参数调整后系统的各项性能指标,看是否达到预期要求,否则继续调整。
    例如,Oracle通常利用定时执行 statspacke.snap 包收集数据库的运行状态,然后利用程序 spreport.sql对两个才几点之间的数据产生报表,以分析这段时间数据库的各种运行指标。Sybase数据库用 sp_sysmon,sp_monitor,sp_configure 命令才采集和分析一段时间内数据库的各种运行指标。

     

    3.查询优化
    可以通过如下方法来优化查询的:
    (1) 把数据、日志、索引放到不同的I/O设备上,增加读取速度。数据量越大,提高I/O越重要。
    (2) 纵向、横向分割表,减少表的尺寸
    (3) 根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数量量。注意填充银子要适当(最好使用默认值0)。索引应该尽量的小,使用自己数小的列建索引好,不要对涌现的几个值的列建立单一索引。
    (4) 用OR的子句可以分解成多个查询,并且通过UNION 连接多个查询。它们的速度只与是否使用索引有关,如果查询需要用到联合索引,用UNION ALL执行的效率更高。
    (5) 在查询SELECT语句中庸WHERE子句限制返回的行数。避免表扫描。如果返回不必要的数据,浪费了数据库的I/O资源,加重了网络的负担,降低了性能。如果表很大,在表扫描的期间将表锁住,禁止其他的连接访问表,后果很严重。
    (6) 注意,在没有必要的时候不要用distinct,它同union一样会使查询变慢。
    (7) 在IN后面值得列表中,将出现最频繁的值放在最前面,出现得最少的放在最后面,减少判断的次数。
    (8) 一般在 groupby 和 having 子句之前就能剔除多余的行,所以尽量不要用她们来执行剔除工作。
    (9) 尽量将数据的处理工作放在服务器上,减少网络的开销,如使用存储过程。存储过程是编译好的,优化过的,并且被组织到一个执行规划里,且存储在数据库中的SQL语句,是控制流语言的集合,速度当然快。

    (10) 不要再一句话里再三地使用相同的函数,浪费资源,将结果放在变量里再调用更快。

    另外,还可以针对大量只读查询操作进行优化,常见的方法有:

    (1) 数据量教教的数据,可以考虑不存储在数据库中,而是通过程序常量的方法解决。

    (2) 需要存储在数据库中的数据,可以考虑采用物化视图(索引视图)。当database administrator在视图上创建索引时。这个视图就被物化(执行)了,并且结果集被永久地保存在唯一聚簇索引中。

    (3) 数据存储时可以考虑适当的数据冗余,以减少数据库表之间的连接操作,提高查询效率。

    (4) 针对数据的特点,采取特定的索引类型,例如位图索引等。

     

     

    个人遇到过的问题


    第二种查询速度比第一种快

     

     

     

    展开全文
  • 提高多表关联数据查询效率

    千次阅读 2016-11-22 09:15:08
    前期做了一个项目,使用sqlservice数据库,后来发现数据量越多,对应的系统反应速度就越慢,7万多条数据反应要5~6秒,后来试了一下,看看视图是否能提高效率,虽然网上说是没用的,可是自己还是试了一下,结果的确...

    前期做了一个项目,使用sqlservice数据库,后来发现数据量越多,对应的系统反应速度就越慢,7万多条数据反应要5~6秒,后来试了一下,看看视图是否能提高点效率,虽然网上说是没用的,可是自己还是试了一下,结果的确没有效果。于是乎,本人就想,视图能否建个索引试一下呢,于是,把要查询的几个查询条件设置了一个索引,设置后提交,报了一个缺少唯一索引,原来在建其它索引前,必须要先设置一个唯一索引,设置了唯一索引,在设置一下查询条件的索引,速度瞬间上去了,查询直接秒出数据了

    注:建立一般的视图是无法建立索引的,新建索引按钮会变成灰色或者可以点,但是提交索引的时候会报错。这个时候,需要在原索引的as前面加一个with schemabinding。完整的视图语句为 create view   视图名  with schemabinding   as  查询体

    展开全文
  • 1、对查询进行优化,避免全表扫描,首先应考虑在where及order by涉及的列上建立索引。2、避免在where子句对字段进行null值判断,否则会导致引擎放弃使用索引而进行全表扫描。3、应尽量避免在where子句中使用!=或者&...

    34ae03139797166322728aaf3ad4217a.png

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

    2、避免在where子句对字段进行null值判断,否则会导致引擎放弃使用索引而进行全表扫描。

    3、应尽量避免在where子句中使用!=或者<>操作符,否则引擎放弃索引使用全表扫描。

    4、应尽量避免在where子句中使用or来连接条件,否则将导致引擎放弃使用索引而进行全表扫描(可以考虑使用union连接来替代)。

    5、in 和 not in 也要慎用,否则会导致全表扫描(对于连续的数值能用between就不要用in)。

    6、使用了`%xxx%`或者`%xxx`导致全表扫描,(若要提高效率考虑使用覆盖索引)。

    7、应尽量避免在where子句中对字段进行表达式或者函数操作,这将导致引擎放弃使用索引而进行全表扫描。

    8、在使用索引字段作为条件时,如果该索引是符合索引,那么必须使用到该索引中第一个字段作为条件时才能保证系统使用到该索引,否则该索引不被使用,并且应尽可能的让字段顺序与索引顺序相一致(虽然MySQL底层会优化)

    9、很多时候使用 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)

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

    11、索引并不是越多越好,索引固然可以提高相应的select查询效率,但是同时也降低了insert和update的效率,因为insert和update有可能会重建索引,一个表的索引数最好不要超过6个。

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

    13、尽量使用可变长度类型varchar, 因为首先变长字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。

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

    本文参考:

    展开全文
  • Mybatis提高查询效率的方式

    万次阅读 2019-08-02 16:45:56
    第一次会执行sql语句查询数据库,然后保存到sqlsession缓存,第二次查询会先从缓存里查找,有的话直接返回不会执行sql. 但是如果两次sql中间增加一次commit操作(insert,delete,update),如: select * from table ...
  • 查询效率慢的原因: 1:没有加索引或者索引失效 where条件使用如下语句会索引失效:null、!=、<>、or连接、in(非要使用,可用关键字exist替代)和not in、'%abc%'; 使用参数:num=@num、表达式操作:...
  • 1. 数据库方面 1. 建立索引 2.分区(如MySQL,按时间分区) 3. 尽量使用固定长度字段和限制字段长度(如 varchar(10)) 优势:... 提高数据库处理速度; 3. 附带校验数据库是否合法功能 2. 在数据库 I/O方面;...
  • neo4j刚启动数据需要预热 使用bin/neo4j-shell 进入neo4j命令行界面,执行以下语句预热: MATCH (n) OPTIONAL MATCH (n)-[r]-&gt;() RETURN count(n.name) + count(r); 索引问题 首先使用explain ,看...
  • es 在数据量很大的情况下(数十亿级别)如何提高查询效率?二. 数据预热三. 冷热分离四. document 模型设计五. 分页性能优化 一. es 在数据量很大的情况下(数十亿级别)如何提高查询效率? es 性能并没有你想象中...
  • 问:使用视图能提高查询效率么? 答:普通视图只是记录相当于把查询语句持久化了,下次再按照这个查询条件来查询一遍,只是添加了一个对多表关联更加方便的查询入口而已,并不能实际提高查询效率。通过物化视图可以...
  • 如果不使用索引,数据会零散的保存在磁盘块中,查询数据需要挨个遍历每一个磁盘块,直到找到数据为止,使用索引后会将磁盘块以树桩结构保存,查询数据时会大大降低磁盘块的访问数量,从而提高查询效率。如果表中的...
  • 14、并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起...
  • 如何提高多表查询效率

    千次阅读 2018-12-10 19:27:38
    记录背景 客户反映系统的用户统计模块报...解决方法有两个,一是提高nginx的超时时间,二是优化sql的查询效率,于是选择了后者。 优化的大致思路 加索引,优化sql语句 当你发现做了上述两件事后并没有改善 可以通过...
  • 提高数据库查询效率的八个方法

    万次阅读 2016-10-23 19:44:04
    其实,不管是Like 关键字,若采用MATCHES关键字的话,若在大量数据中查找符合条件的记录,则其运行效率也比较低。这主要是其技术特性所造成的。  Like与Matches两个关键字,其支持通配符匹配。在有些专业书籍上把...
  • 数据量不是特别大时,通过减少sql查询次数,确实可以加快响应时间 !! 这个优化法则归纳为5个层次: 1、减少数据访问(减少磁盘访问) 2、返回更少数据(减少网络传输或磁盘访问) 3、减少交互次数(减少网络...
  • ES 在数据量很大的情况下如何提高查询效率

    万次阅读 多人点赞 2019-06-05 20:43:06
    如果面试的时候碰到这样一个面试题:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率? 这个问题说白了,就是看你有没有实际用过 ES,因为啥?其实 ES 性能并没有你想象中那么好的。 很多时候数据量大了,...
  • 处理百万级以上的数据查询提高效率的办法 1.应尽量避免在 where 子句中使用!=或&lt;&gt;操作符,否则将引擎放弃使用索引而进行全表扫描。 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 ...
  •  实际上,在解析的过程中, 会将‘*’ 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间。 2.增加内存、另外硬盘的读写速度如何?这都是影响查询效率因素。如果磁盘...
  • MySQL使用limit 1提高sql查询效率

    千次阅读 2019-03-05 14:30:49
    在做大数据量的web开发的过程中,在程序开发的任何一步中都需要认真的思考能否有更好的办法来提高程序的执行效率。 下面分享一个在实际工作中经常用到却很容易被忽视的一个优化mysql查询效率的方法,合理的使用limit...
  • 数据量小的时候,没感觉啥,数据量稍微大点。那速度贼感人。 下面是几种查询情况的对比。 1,使用Spring-data-mongodb。 2,使用游标查询 3,还是spring的 先是代码: package com.xx.xxx.repository; ...
  • 1.关于SQL查询效率,100w数据查询只要1秒,与您分享: 机器情况 p4: 2.4 内存: 1 G os: windows 2003 数据库: ms sql server 2000 目的: 查询性能测试,比较两种查询的性能 SQL查询效率 step by step: – setp 1. ...
  • MYsql 针对where条件时间范围的查询效率方式对比 end_rec表,游戏记录表 时间字段 time_str 表示每局游戏结束时间,已经针对 time_str加了 B-tree 索引,一共68w条数据 需求: 查询今日的组局数量 1,方式一,用...
  • 一)数据库设计方面  1)首先避免全局扫瞄,在where和order by等涉及的列上建立索引。 2)尽量避免的where子句中对null进行判断,因为对null值...将num的默认值设置成,这样数据库就会按照索引机制进行查询。 ...
  • MySQL的索引是如何提高查询效率的?

    千次阅读 2019-04-14 16:05:41
    如果不使用索引,数据会零散的保存在磁盘块中,查询数据需要挨个遍历每一个磁盘块,直到找到数据为止,使用索引后会将磁盘块以树桩结构保存,查询数据时会大大降低磁盘块的访问数量,从而提高查询效率。如果表中的...
  • MySQL - 如何提高SQL的查询效率(where条件优化)

    千次阅读 多人点赞 2018-11-25 22:37:40
    目录 说在前面 35条优化规则 总结 说在前面 整天说SQL优化,SQL优化,到底怎么才...对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 (2)需要当心的WHERE子句 ...
  • 图解面试题:如何提高SQL查询效率

    万次阅读 多人点赞 2019-10-31 21:00:00
    一般在写SQL时需要注意哪些问题,可以提高查询效率?【解题思路】数据量大的情况下,不同的SQL语句,消耗的时间相差很大。按下面方法可以提高查询的效果。1. select子句中尽量避免使用*select子句中,*是选择全部...
  • * 原文链接:... ... a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。   b. 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使
  • ​ 查看属于part_201501分区的数据有多少条 6:select partition_name part,partition_expression expr,partition_description descr,table_rows from information_schema.partitions where TABLE_SCHEMA =schema()...
  • 一、前言 无论是面试、还是日常工作中,或多或少...二、千万级数据表索引和无索引查询效率对比 现在有一个学生表student,有1000万条数据 未加索引,查询class_id=2的学生信息的耗时:SELECT * FROM student WHERE cla
  • 提高SQL查询效率 的10大方法

    千次阅读 2015-12-14 15:52:28
    提高SQL查询效率 的10大方法 一、查询条件精确,针对有参数传入情况 二、SQL逻辑执行顺序 FROM–>JOIN–>WHERE–>GROUP–>HAVING–>DISTINCT–>ORDER–>TOP 三、横向 查询需要的字段 当在SQL语句中连接多个表...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,350,999
精华内容 540,399
关键字:

为了提高数据的查询效率