首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

图解面试题:如何提高SQL查询效率

​【题目】 我们公司数据量非常大,需要不仅仅是提取数据,要了解SQL方案优化。一般在写SQL时需要注意哪些问题,可以提高查询效率?...【解题思路】 数据量大情况下,不同SQL语句,消耗时间相差很大。按下面方法可以提高查询效果。 1. select子句中尽量避免使用* select子句中,*是选择全部数据意思。...) 所以,为了提高效率,where子句中遇到函数或加减乘除运算,应当将其移到比较符号右侧。...5.使用limit子句限制返回数据行数 如果前台只需要显示15行数据,而你查询结果集返回了1万行,那么这适合最好使用limt子句来限制查询返回数据行数。...大多数同学都会觉得“麻烦”、“不做也没有什么影响”,但是习惯总是慢慢养成。 拥有好习惯,未来在工作中,面对不同数据量,就可以游刃有余地选择不同方法来降低完成时间,从而提升工作效率

96820

图解面试题:如何提高SQL查询效率

【题目】 我们公司数据量非常大,需要不仅仅是提取数据,要了解SQL方案优化。一般在写SQL时需要注意哪些问题,可以提高查询效率?...【解题思路】 数据量大情况下,不同SQL语句,消耗时间相差很大。按下面方法可以提高查询效果。 1. select子句中尽量避免使用* select子句中,*是选择全部数据意思。...) 所以,为了提高效率,where子句中遇到函数或加减乘除运算,应当将其移到比较符号右侧。...4.使用limit子句限制返回数据行数 如果前台只需要显示15行数据,而你查询结果集返回了1万行,那么这适合最好使用limt子句来限制查询返回数据行数。...现在很多职位都已经把sql列入技能要求,连一些财会岗位都优先有sql技能求职者。 其实这一定程度上也是要求求职者有数据分析能力,能使用sql工具,最好还能对数据提出自己见解和建议。

19150
您找到你想要的搜索结果了吗?
是的
没有找到

OB 运维 | 一个关于 NOT IN 子查询 SQL 优化案例

数据库版本:OceanBase 3.2.3.3 1问题描述 前段时间碰到一个慢 SQL,NOT IN 子查询被优化器改写成了 NESTED-LOOP ANTI JOIN,但是被驱动表全表扫描无法使用索引...判断直接原因 从执行计划、表结构和数据量来看,这个 SQL 效率低有两个原因: 关联字段 AGENT_ID 有索引,但对被驱动表做查询时却使用全表扫描,效率必定低。为什么不走索引?...NULL 值出现,则整个 SQL 执行结果就会为 NULL。...加 /*+ no_rewrite */ 后,走 SUBPLAN FILTER 算子,父查询显示可以走索引,为什么执行效率还是慢?...加 /*+ no_rewrite */ 执行计划,执行耗时 7 秒,比原始 SQL 耗时 16 秒快,从执行逻辑来看: 这里是非相关子查询,每次重复执行结果都是一样,所以执行一次后保存在参数集合中

9510

开启MYSQL慢查询日志,监控有效率问题SQL景下并发测试

输入命令show variables like 'slow_query_log', 页面会显示是否开启了慢查询日志,slow_query_log =ON,代表已经开启 如果未开启,则需要执行该命令set...init.d/mysqld(mysql) start 停止:/etc/init.d/mysqld(mysql) stop 重启:/etc/init.d/mysqld(mysql) restart 最后查看慢查询日志所在位置....log目录,测试结果如下 记录成功 字段名 含义 值 Time int类型时间戳 加 时间 180913 10:39:57 User@Host 执行SQL主机信息 mjb[mjb] @ localhost...Query_time 执行时间 2.000219 Lock_time 锁定时间 0.000000 Rows_sent 返回记录数 1 Rows_examined 扫描行数 0 SET timestamp SQL...执行用时 1536806397 select sleep(2) SQL语句 select sleep(2); 设置成功,性能测试完成,可以把监控到SQL日志文件进行查看,看是哪些SQL语句需要进行优化

69721

MySQL优化--官方文档翻译

根据您工作角色(开发人员、DBA或两者组合),您可以在单个SQL语句、整个应用程序、单个数据库服务器或多个联网数据库服务器级别上进行优化。...8.1优化概述 8.2优化SQL语句 8.3优化与指标 8.4优化数据库结构 8.5 InnoDB表优化 8.6优化MyISAM表 8.7内存表优化 8.8了解查询执行计划 8.9控制查询优化器 8.10...缓冲和缓存 8.11优化锁定操作 8.12优化MySQL服务器 8.13绩效衡量(基准) 8.14检查服务器线程(进程)信息 8.1优化概述 数据库性能取决于数据库级别的几个因素,例如表、查询和配置设置...高级用户寻找机会来改进MySQL软件本身,或者开发自己存储引擎和硬件设备来扩展MySQL生态系统。...是否有适当索引来提高查询效率? 您是否为每个表使用了适当存储引擎,并利用了您使用每个存储引擎优势和特性?

71320

Java知识点总结

并不是只要包含这三列查询都会用到该组合索引,下面的几个SQL就会用到这个组合MySQL数据库索引: SELECT * FROM mytable WHREE username="admin" AND city...executeQuery(String sql) 执行给定 SQL 语句,该语句返回单个 ResultSet 对象 executeUpdate(String sql)...使用哪一个方法由 SQL 语句所产生内容决定。 方法executeQuery 用于产生单个结果集语句,例如 SELECT 语句。...MySQL Hash索引结构特殊性,其检索效率非常高,索引检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次IO访问,所以 Hash 索引查询效率要远高于...对于组合索引,Hash 索引在计算 Hash 值时候是组合索引键合并后再一起计算 Hash 值,而不是单独计算 Hash 值,所以通过组合索引前面一个或几个索引键进行查询时候,Hash 索引也无法被利用

1.1K10

日活3kw下,如何应对实际业务场景中SQL过慢优化挑战?

一般来说,一个SQL查询变慢可能有以下几个原因: 索引失效 多表连接 查询字段过多 数据量过大 索引字段基数太小 数据库连接不足 数据库表结构不合理 数据库IO或CPU负载高 数据库参数设置不合理 长时间事务...情况五:表中数据量太大 当单个表中数据量超过1000万条时,通常会导致查询效率下降,即使使用了索引也可能变得比较缓慢。在这种情况下,单纯建立索引并不能完全解决问题。...通过分散数据存储方式,可以有效降低单表数据量,提高查询性能。关于分库分表和分区详细介绍可以在相关文档中查阅。...可能原因有几个: 业务量过大:如果业务量巨大,单个数据库无法承载,那么最好解决方案是进行数据库分库操作,将数据分散存储在多个库中,以减轻单库压力。...慢SQL或长事务:存在一些慢SQL查询或长时间运行事务,会占用数据库连接资源,导致数据库连接数不足。这种情况下,慢SQL会占用连接资源,导致其他查询被阻塞,进而影响整体查询效率

10310

SQL Server优化50法

索引应该尽量小,使用字节数小列建索引好(参照索引创建),不要对有限几个字段建单一索引如性别字段 5、提高网速; 6、扩大服务器内存,Windows 2000和SQL server...33、尽量少用视图,它效率低。对视图操作比直接对表操作慢,可以用stored procedure来代替她。特别的是不要用视图嵌套,嵌套视图增加了寻找原始资料难度。...对单个表检索数据时,不要使用指向多个表视图,直接从表检索或者仅仅包含这个表视图上读,否则增加了不必要开销,查询受到干扰.为了加快视图查询,MsSQL增加了视图索引功能。...在没有输入负责人代码时,第二种方法显然比第一种方法执行效率高,因为它没有限制条件;在输入了负责人代码时,第二种方法仍然比第一种方法效率高,不仅是少了一个限制条件,还因相等运算是最快查询运算。...我们写程序不要怕麻烦 50、关于JOBCN现在查询分页新方法(如下),用性能优化器分析性能瓶颈,如果在I/O或者网络速度上,如下方法优化切实有效,如果在CPU或者内存上,用现在方法更好。

2.1K70

公司DBA关于MySQL开发一点经验

控制数据量 一年内单表数据量一般含char不超过500W条,我们需要合理分表。单个表建议在300到400之间。 单表字段数量 单表字段应该少而精,那多少合适呢?...我们应该将大SQL拆成多条简单SQL,简单SQL会使缓存命中率更高。 关于事务 我们应该尽量将与事务无关操作放到事务外面,这样能减少锁资源占用。...关于SQL效率 改写OR为IN() 同一字段,将or改写为in() OR效率:O(n) IN 效率:O(Log n) 当n很大时,OR会慢很多 Select * from table WHERE phone...关于JOIN 很多童鞋喜欢使用JOIN来连表查询,阿里巴巴开发手册里就建议不要超过三表JOIN。 建议将表拆分。...'; Select * from tag_post WHERE tag_id=1321; Select * from post WHERE post.id in (123,456,314,141) 关于计数统计

25120

SQL优化完整详解

Com_delete 执行 delete 操作次数; 以下几个参数是针对 Innodb 存储引擎计数,累加算法也略有不同: 1....Innodb_rows_deleted 执行 delete 操作删除行数; 通过以上几个参数,可以很容易了解当前数据库应用是以插入更新为主还 是以查询操作为主,以及各种类型 SQL...Slow_queries 慢查询次数 2. 定位执行效率较低SQL语句 可以通过以下两种方式定位执行效率较低 SQL 语句: 1....通过EXPLAIN 分析低效 SQL执行计划: 通过以上步骤查询效率 SQL 后,我们可以通过 explain 或者 desc 获取MySQL 如何执行 SELECT 语句信息,...当我们通过二级索引统计数时候,无需扫描数据文件;而通过主键索引统计数据时,由于主键索引与数据文件存放在一起,所以每次都会扫描数据文件,所以主键索引统计没有二级索引效率高。

1.2K40

MySQL · 性能优化· CloudDBA SQL优化建议之统计信息获取

CloudDBA需要首先计算表统计信息,是因为: 数据库优化器通常是基于代价寻找执行路径; SQL优化建议所针对数据库不限于MySQL数据库,也不局限于某一个特定版本; 1....基本原则 数据库统计信息在SQL优化起到重要作用。用来估算查询条件选择度常见统计信息包括表统计信息和字段统计信息。...DBA计算查询条件选择度或代价时经常通过手工执行SQL语句获取,并进行返回行数或代价粗略估算。...针对复杂SQL优化,比如多条件查询、Range查询以及多表关联查询等,统计直方图能帮助DBA更好进行代价估算。...若多条件查询条件关联性很低,则综合选择度就是单个条件选择度乘积;若多条件查询条件关联性较高,则采用最小选择度(或乘以系数)作为综合选择度。 5.

83330

大白话说说mysql

前面其实写了好几篇关于 mysql 索引文章了,文章中有具体实例和 sql 语句,这篇文章我想再用纯大白话讲讲 mysql 索引,文中不涉及具体 sql 。...我之前甚至想过为啥要用数据库来保存数据,用普通 txt 或者 word 这类文件不行么,这个问题其实可以从几个方面来看,一个是并发访问数据加锁,另一个是数据安全性,再一个是数据查询性能问题。...首先我们可以想到使用哈希表,哈希表能通过键值快速找到对应值,但是因为哈希是无序,一般更适用于等值查询,但实际业务中通过会有大量区间查询,比如查询 id 在 1-100 间值,使用哈希的话效率就会大打折扣了...再一个就是二叉搜索树了,二叉搜索树查找效率比较高,而且二叉搜索树中序遍历就是一个有序数组,但依然不能很好支持区间查询。...事实上 mysql 底层采用 B+ 树也就是这么一步步演变过来关于 B+ 树详细介绍可以参考我前面的文章。

50710

《面试季》高频面试题-Group by进阶用法

(11)、limit: 筛选返回数据条数 SQL执行顺序一些疑问 1、是先执行group by还是先执行select   答: 通过上面的SQL顺序执行可知,其实是限制性分组group by再进行查询数据筛选...如:使用班级分组,但是查询班级中学生,此时一个班级对应多个学生,无法在分组同时又查询单个学生,所以会出现歧义。...3、分组并统计: 在分组使用并实现对所有分组数据总数统计,在数据分析中按组统计并展示合计数时候非常好用。...一般解决方案都是先执行分组SQL,然后再执行查下总数SQL,但这样其实就重复请求了数据库,如果数据量表大条件复杂时候,对效率影响是很大。...那么有没有方式可以在分组同时也将总数统计出来,这样就无需重复查询数据,提高效率了,答案是有,就是使用官方提供rollup或者cube或者grouping sets来实现。

1.6K20

mysql查询缓慢原因和解决方案

索引应该尽量小,使用字节数小列建索引好(参照索引创建),不要对有限几个字段建单一索引如性别字段 5、提高网速; 6、扩大服务器内存,Windows 2000和SQL server 2000...33、尽量少用视图,它效率低。对视图操作比直接对表操作慢,可以用stored procedure来代替她。特别的是不要用视图嵌套,嵌套视图增加了寻找原始资料难度。...对单个表检索数据时,不要使用指向多个表视图,直接从表检索或者仅仅包含这个表视图上读,否则增加了不必要开销,查询受到干扰.为了加快视图查询,MsSQL增加了视图索引功能。...在没有输入负责人代码时,第二种方法显然比第一种方法执行效率高,因为它没有限制条件;在输入了负责人代码时,第二种方法仍然比第一种方法效率高,不仅是少了一个限制条件,还因相等运算是最快查询运算。...我们写程序不要怕麻烦 50、关于JOBCN现在查询分页新方法(如下),用性能优化器分析性能瓶颈,如果在I/O或者网络速度上,如下方法优化切实有效,如果在CPU或者内存上,用现在方法更好。

3.1K30

【Redis 学习笔记】1、Redis 简介

那么在正式介绍 Redis 之前,我们先来看看关于 NoSQL 一些相关信息,比如它是什么,又比如它一些特点以及它一些分类。...NoSQL 传统 RDBMS 结构化组织 SQL 数据和关系均存在单独表中 操作数据定义语言 严格一致性 基础事务 …… NoSQL 不仅仅是数据 无固定查询语言...接下来,我将从相关简介,如何安装以及常用基本操作几个方面来对 Redis 进行介绍。...单个操作时原子性,多个操作也支持事务,通过 MULTI 和 EXEC 指令封装; 支持其他丰富特性,如 publish/subscribe,通知,key 过期等; Redis 应用场景 内存存储、...持久化 高效率,可以用于高速缓存 发布订阅系统 地图信息分析 计时器、计数器 任务队列 数据过期处理 应用排行榜 …… Redis 和其他 key - value 数据库不同 Redis 数据结构更加复杂且提供对他们原子性操作

45520

JDBC基本知识

("SELECT a, b, c FROM Table1"); Statement接口提供了三种执行SQL语句方法: 方法executeQuery:用于产生单个结果集语句,例如 SELECT 语句...结果集Resultset对象 1.ResultSet遍历 一个ResultSet对象对应着一个由查询语句返回一个表,这个表中包含所有的查询结果。...不过,按从左到右顺序对各列进行处理可以获得较高执行效率。ResultSet类getXXX()方法可以从某一列中获得检索结果。...,得到许多关于结果集信息,下面给出几个常用方法: (1) getColumnCount():返回一个int值,指出结果集中列数; (2) getColumnLabel(int column):...在java.sql.Types类中有关于各种SQL数据类型定义; (5) getColumnTypeName(int comlumn):返回指定列数据类型在数据源中名称。

1.2K110
领券