精华内容
下载资源
问答
  • 怎样提高数据库查询效率

    千次阅读 2019-05-13 09:50:03
    目前可以说大多数程序的所耗的时间大部分在于数据库查询中。打个比方,程序内部代码跑1秒,数据库查询数据需要10秒,maybe夸大了。 主要通过三种途径提高数据库查询效率:1.SQL的性能优化,2.数据库的性能优化,3....

    目前可以说大多数程序的所耗的时间大部分在于数据库查询中。打个比方,程序内部代码跑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) 针对数据的特点,采取特定的索引类型,例如位图索引等。

     

     

    个人遇到过的问题


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

     

     

     

    展开全文
  • Oracle数据库查询优化建议

    万次阅读 2017-01-15 13:18:09
    Oracle数据库查询优化建议
    1.尽量少的对数据库操作,改多次查询操作为一次查询,多次循环操作数据库会影响程序的响应时间,
    2.数据库设计时也要避免多个对象之间的多层深层内嵌,避免外键无限的关联,这将导致查询一条数据会关联很多项的数据,此条数据太大,
    最终导致数据库查询等操作的响应时间太长。如果数据库设计出现多层深层内嵌时,查询等操作响应时间太久,可考虑使用视图查询。
    展开全文
  • 数据库查询模糊匹配

    万次阅读 2017-04-10 16:26:43
    执行数据库查询时,有完整查询和模糊查询之分。一般模糊语句格式如下:SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件; 其中,关于条件,SQL提供了四种匹配模式:%:表示零个或多个字符。可以匹配任意类型和任意长度的...

    执行数据库查询时,有完整查询和模糊查询之分。

    一般模糊语句格式如下:

    SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件;
    

    其中,关于条件,SQL提供了四种匹配模式:

    一、%:表示零个或多个字符。


    可以匹配任意类型和任意长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。

    select * from flow_user where username like '%王%';
    

    将会把flow_user这张表里面,列名username中含有“王”的记录全部查询出来。


    如果需要找到flow_user这张表里面,字段username中既有“唐”,又有“英”的记录,可以使用and条件

    select * from flow_user where username like '%英%' and username like '%唐%';
    

    则可以查询出来所有包含“英”和“唐”的所有内容,“英”和“唐”所在的前后位置无所谓。


    select * from flow_user where username like '%英%唐%';
    

    可以查出来包含“英唐”的内容,但是查不出来“唐英”的内容。


    二、_:表示任意单个字符

    匹配单个任意字符,它常用来限制表达式的字符长度


    select * from flow_user where username like '_英_';
    

    只能找到“王英琨”这样username为三个字且中间一个字是“英”的内容。


    select * from flow_user where username like '英__';
    

    只能找到“英雄点”这样username为三个字且第一个字是“英”的内容。


    三、[]:表示括号内所列字符中的一个(类似正则表达式)。

    指定一个字符、字符串或范围,要求所匹配的对象为他们中的任一个。


    select * from flow_user where username LIKE'[王李张]飞';
    

    将找出“王飞”“李飞”“张飞”(而不是“张王李飞”)。


    如[]内有一系列字符(01234,abcde之类的)则可略写为“0-4”,“a-e”:

    select * from flow_user where username like '老[0-9]';
    

    将找出“老1”、“老2”、……、“老9”;


    Oracle 10g以上的版本用法为:  

    select * from flow_user where regexp_like(username, '[张王李]飞');
    

    四、[^]:表示不在括号所列之内的单个字符。

    其取之和[]相同,但它所要求匹配对象为指定字符以外的任一个字符。


    select * from flow_user where username LIKE'[^王李张]飞';
    

    将找出不是“王飞”“李飞”“张飞“的”赵飞“、”吴飞“等。

    注:oracle like 不支持正则,你可以使用支持like的正则regexp_like


    五、查询内容包含通配符时:

    由于通配符的缘故,导致查询特殊字符“%”、“_”、“[”的语句无法正常实现,把特殊字符用“[]”括起来便可以正常查询。
      
    function sqlencode(str)
    str=replace(str,”[“,”[[]”) ‘此句一定要在最前
    str=replace(str,”“,”[]”)
    str=replace(str,”%”,”[%]”)
    sqlencode=str
    end function

    展开全文
  • Oracle数据库查询语句

    千次阅读 2019-01-04 23:08:10
    1 oracle数据库查询表的所有数据–select * from 表名;(* 代表所有) 2 oracle数据库查询表中指定字段的值–select 字段名1,字段名2,……from 表名; 3 oracle数据库往表中添加数据信息–(添加信息使用insert ...

    1 oracle数据库查询表的所有数据–select * from 表名;(* 代表所有)
    2 oracle数据库查询表中指定字段的值–select 字段名1,字段名2,……from 表名;
    3 oracle数据库往表中添加数据信息–(添加信息使用insert into语句)
    insert into 表名 values(添加相对应的数据信息,如果在一个字段名中没有信息可以用“null”null的意思是空白);
    填写完数据后执行就把你想加入的数据信息添加到表中了,这时信息并没有添加到数据库里而是只在表面添加完毕,之后还要执行一个命令–commit;(commit它在数据库里的意思是数据提交的意思)。
    你在填写完数据信息后也可以不用写这个命令,直接点击左上角一个向下的绿色箭头就可以也是提交的意思。在这里插入图片描述

    有填写数据就有删除数据,而删除表中数据信息的语句就是delete from 表名 where 字段名=想删除表中的数据信息;
    4 oracle数据库给查询结果中的字段名使用别名。
    还是用到select语句,这个时候要用到“as”关键字–select 字段名 as 想修改成的字段名 ……from 表名;***注意***as关键字可以省略不写,别名中没有特殊字符双引号可以省略不写。

    展开全文
  • SQL数据库查询LIMIT 数据分页

    万次阅读 2017-11-28 12:17:43
    SQL数据库查询LIMIT 数据分页SQL的语句LIMIT 约束SELECT 查询数据包表时,使得SQL查询语句返回指定的记录数(行数)。LIMIT 可以设置1个或2个int整型常量数字作为参数。LIMIT在数据分页查询时候十分有用,因为不是每...
  • 数据库查询指定行的数据

    千次阅读 2019-06-12 09:19:40
    各种不同数据库查询前几行/后几行的sql语句 SqlServer select top 10 * from tablename; Informix select first 10 * from tablename; Oralce select * from tablename where rownum<=10; MySql...
  • python 数据库查询条件‘不等于’

    千次阅读 2018-10-11 15:46:46
    python 数据库查询条件‘不等于’ 当在做数据库查询的时候,想根据业务需求进行条件的筛选或过滤, 但是django封装的数据库语句中没有 ‘不等于’ 查询操作。 例如,通过以下语句进行‘不等于查询’ data = User…...
  • Delphi实现数据库查询编辑功能

    千次阅读 2017-01-03 09:51:57
    Delphi实现数据库查询编辑功能
  • Mysql数据库查询sql执行日志

    千次阅读 2019-07-26 15:15:28
    mysql数据库查询sql执行日志(linux环境下)1、登录数据库确认是否开启了日志2、查询日志文件3、使用mysql自带的mysqlbinlog查询二进制文件 1、登录数据库确认是否开启了日志 mysql -uroot -p 登录成功之后查询操作...
  •  •流查询步骤只能进行等值查询,数据库查询步骤可以进行非等值查询  •流查询在查询之前把数据都加载到内存里,数据库查询可以选择是否把数据加载到内存。  •进行等值查询时,数据库查询步骤如果选中了全部...
  • 数据库查询返回类型

    千次阅读 2017-07-19 19:47:17
    List> result =dao.showShopCoupons...数据库查询中有date类型字段,返回List>集合,但是其中date类型存放进去的不是String而是java.sql.Timestamp,没有报错,从result取出来也是java.sql.Timestamp而不是String类型。
  • Java中操作数据库查询数据

    万次阅读 2019-06-08 12:23:11
    Java操作数据库查询数据的大概流程: 1)创建数据库连接(这里用的是MySQL数据库) private static String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/test"; //数据源(mysql)的...
  • 数据库查询”步骤对于每一行输入流最多只能向输出流返回一行,而”数据库连接”步骤是从数据库中返回的 每一行都输出到输出流中. 换句话说,”数据库连接”步骤包含了”数据库查询”的结果,同时返回更多的数据行. 1...
  • 解决数据库查询中文返回乱码问题

    千次阅读 2019-08-12 23:25:23
    解决数据库查询返回乱码问题 在windows系统下使用 声明小编使用的是本地调试 MySQL会出现中文乱码的原因不外乎下列几点: 1.server本身设定问题,例如还停留在latin1 2.table的语系设定问题(包含character与...
  • PyQt5 通过文本框等组件动态实现数据库查询 My Environment Python 3.x Pyqt5 Qt designer PyUIC MySQL pymysql 实现效果 通过在界面文本框等组件输入相关信息,点击按钮通过pysql完成数据库语句拼接实现数据库...
  • 数据库查询结果的保存方法(C++)

    千次阅读 2018-08-23 15:10:58
    本文主要介绍使用 C++ 语言保存数据库查询结果的方法。 1 概述 本文使用STL的组合结构来保存数据库查询结果,STL结构如下: // 定义存储sql结果的结构 vector<map<string, string> > ...
  • 数据库查询优化策略

    千次阅读 2017-05-04 21:32:55
    数据库查询优化逻辑层查询优化策略1.尽可能的早做选择和投影(基本思路):可以使中间结果变小,节省几个数量级的执行时间 2.把选择和投影串接起来:一元运算序列可一起执行,只需对整个关系进行一趟扫描 3.把投影...
  • WINCC7.3/7.4通过VBS脚本链接数据库查询数据库显示并导出EXCEL Wincc作为西门子可视化系统,可以用于数据追溯功能。本文将讲述PLC设备数据存储到SQL数据库,并用于日后查询与导出。 查询SQL数据库,将数据...
  • es数据库查询API

    千次阅读 2019-08-07 18:12:46
    ES数据库是非关系型数据库 2.ES数据库优点 1.存储优化 内存中使用有限状态机FST优化 本质上是前缀树加上后缀树的结合,利用这个数据结构可以把Term更节省内存地放置并查询,它有着字典树的查询时间复杂度,但是...
  • 基于labview实现MYSQL数据库查询功能

    千次阅读 热门讨论 2019-05-23 12:30:09
    基于labview实现MYSQL数据库查询功能 前言: labview是一款功能强大的图形化编程软件,也就是俗称的G语言。 本篇将介绍如何利用labview对MYSQL进行列表分页,范围查询及模糊查询等几个可广泛应用的简易功能,但...
  • 数据库使用:QSQLITE数据库建立:1)创建数据库表数据类型 2)存入测试数据(.CSV文件数据导入)3)tabview显示表数据4)根据条件查询数据遇见问题总结:主要出现在数据库查询部分,但是归根结底还是数据库time类型...
  • sql在数据库查询很快,通过mybatis执行很慢 检查mybatis 生成的xml文件,字段类型是否与数据库一致。 ex:xml中时间字段变成了 varchar,数据库为datetime,查询60s 修改xml中字段为TIMESTAMP,查询1s。
  • SqlCommand cmd3 = new SqlCommand("select " + cl ... cl表示数据库表里面的一个字段,num是自己赋得值,通过数据库查询cl对应的字段为空,但是运行结果还是提示if(sd3.HasRows)为真,怎么修改才能正确运行?
  • 1.数据库查询总条数 use information_schema; select sum(table_rows) from tables where TABLE_SCHEMA = 数据库名称;   2.mysql 查看数据库中所有表的记录数 use information_schema; select table_name,...
  • Delphi 数据库查询(TADOQuery)

    千次阅读 2017-03-29 19:56:19
    Delphi 数据库查询(TADOQuery) 在一个程序中你会多次查询数据库的,因此在你写的查询方法中定义一个局部的ADOQuery就可以了,它返回一个数据集_RecordSet。最简单的应用如下: function GetData: _RecordSet;...
  • 我们知道,目前通用的数据库查询语言是SQL语言(Structured Query Language)。SQL语言也是一种编译型语言,需要SQL编译器编译后才能执行,但它与C、C++、Java等语言不同,SQL语言是一种非过程化语言,这意味着使用...
  • Django自定义数据库查询功能(直接通过SQL语句查询) 一、mysql数据库安装配置(windows 7) 这里我使用的mysql5.7的版本,在安装好版本之后需要对mysql进行配置: a). 打开cmd并进入mysql安装路径 b). 然后运行...
  • 数据库查询语句DQL

    万次阅读 2018-11-06 12:58:00
    2.结果集:通过查询语句查询出来的数据以表的形式展示,我们称这个表为虚拟结果集。存放在内存中。查询返回的结果是一张虚拟表。 3.查询指定列的数据: SELECT 列名1,列表2…FROM 表名; 条件查询: **1.**条件查询...
  • 达梦数据库查询语句

    千次阅读 2020-05-07 18:09:24
    DMSQL简介 DM_SQL语言是一种介于关系代数与关系演算之间的语言,其功能主要包括数据定义、 查询、操纵和控制四个方面,通过各种不同的SQL语句来实现。按照所实现的功能,DM_SQL 语句分为以下几种:...数据库安全语句...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,010,286
精华内容 804,114
关键字:

数据库查询