mysql的where字句调优_mysql中select和where子句优化的总结

本篇文章给大家带来的内容是关于mysql中select和where子句优化的总结,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

数据库优化:

1.可以在单个SQL语句,整个应用程序,单个数据库服务器或多个联网数据库服务器的级别进行优化

2.数据库性能取决于数据库级别的几个因素,例如表,查询和配置设置

3.在数据库级别进行优化,在硬件级别进行优化,平衡可移植性和性能

4.合适的结构,合适的数据类型;执行频繁更新的应用程序大量表(少列);分析大量数据的应用程序少量表(多列);选择合适的存储引擎和索引;

5.压缩适用于InnoDB表的各种工作负载,以及只读MyISAM表

6.选择合适的锁定策略;InnoDB存储引擎可以处理大多数锁定问题

7.配置的主要内存区域是InnoDB缓冲池和MyISAM密钥缓存。

8.优化select语句,这方面技巧同样适用于其他带where的delete语句等,在where子句的列上设置索引;索引对于引用多个列如join和外键尤其重要

select where子句优化:

1.调整查询的结构,例如函数调用,为结果集中的每一行只调用一次,为表中的每一行只调用一次

2.减少查询中的全表扫描数

3.定期使用ANALYZE TABLE语句使表统计信息保持最新

4.了解特定于每个表的存储引擎的调优技术,索引技术和配置参数

5.优化InnoDB表的单查询事务

6.通过阅读EXPLAIN计划并调整索引,WHERE子句,连接子句等来调查特定查询的内部详细信息

7.调整MySQL用于缓存的内存区域的大小和属性。通过有效使用InnoDB缓冲池,MyISAM密钥缓存和MySQL查询缓存

8.where条件,去掉不必要的括号,恒定折叠,恒定条件去除,减少不必要的逻辑

9.被索引使用的常量表达式只计算一次

10.count(*)直接从表信息中查询;当只有一张表时,not null表达式也是这样

11.如果不使用GROUP BY或聚合函数(COUNT(),MIN()等),HAVING将与WHERE合并

12.常量表,只有一行或空表;where子句作用在primary key或者unique索引上

13.如果ORDER BY和GROUP BY子句中的所有列都来自同一个表,则在连接时首选该表

14.如果order by子句和group by子句不一样,或来自不同的表,则会创建临时表

15.如果使用SQL_SMALL_RESULT修饰符,MySQL将使用内存中的临时表

16.MySQL甚至无需咨询数据文件即可只从索引中读取行

17.在输出每一行之前,将跳过与HAVING子句不匹配的行

以下表被用作常量表:SELECT * FROM t WHERE primary_key=1;

SELECT * FROM t1,t2

WHERE t1.primary_key=1 AND t2.primary_key=t1.id;

以下查询运行速度非常快:SELECT COUNT(*) FROM tbl_name;

SELECT MIN(key_part1),MAX(key_part1) FROM tbl_name;

SELECT MAX(key_part2) FROM tbl_name

WHERE key_part1=constant;

SELECT ... FROM tbl_name

ORDER BY key_part1,key_part2,... LIMIT 10;

SELECT ... FROM tbl_name

ORDER BY key_part1 DESC, key_part2 DESC, ... LIMIT 10;假设索引列是数值型,以下查询仅用到了索引树:SELECT key_part1,key_part2 FROM tbl_name WHERE key_part1=val;

SELECT COUNT(*) FROM tbl_name

WHERE key_part1=val1 AND key_part2=val2;

SELECT key_part2 FROM tbl_name GROUP BY key_part1;

以下查询使用索引按排序顺序取回数据,不需要单独排序SELECT ... FROM tbl_name

ORDER BY key_part1,key_part2,... ;

SELECT ... FROM tbl_name

ORDER BY key_part1 DESC, key_part2 DESC, ... ;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472107.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据中台建设与应用_Gartner对于建设数据中台的建议

(文:Gartner高级研究总监 孙鑫)数据中台是中国本土诞生的一个名词,很多企业在“什么是数据中台”和“我要上XX中台”徘徊。其炒作程度跟当年的“大数据” 一词有的一拼,如果用Gartner的炒作周期图来看,数据中台目前已经逼近炒作的…

LeetCode 1894. 找到需要补充粉笔的学生编号

文章目录1. 题目2. 解题1. 题目 一个班级里有 n 个学生,编号为 0 到 n - 1 。 每个学生会依次回答问题,编号为 0 的学生先回答,然后是编号为 1 的学生,以此类推,直到编号为 n - 1 的学生,然后老师会重复这…

C# Excel处理工具

需求:选择一个Excel文件,然后对该Excel文件进行处理,再导出一个处理后的Excel文件。 效果图 声明:我对winform开发不熟,但是我看到许多开发人员做东西只管交差,从不考虑用户体验,也不考虑容错处…

mysql 坚向变横向_(排班表一)使用SQL语句使数据从坚向排列转化成横向排列

知识重点:1.extract(day from schedule01::timestamp)13Extract 属于 SQL 的 DML(即数据库管理语言)函数,同样,InterBase 也支持 Extract,它主要用于从一个日期或时间型的字段内抽取年、月、日、时、分、秒数据,因此&a…

python增加子类的参数_python 子类向父类传递关键字参数

父类构造函数class SoapClient(object):"""Simple SOAP Client (simil PHP)"""def __init__(self, locationNone, actionNone, namespace,certNone, proxyNone, nsNone,soap_nsNone, wsdlNone, wsdl_basedir, ca_certsNone,sessionsFalse, soap_…

LeetCode 1897. 重新分配字符使所有字符串都相等

文章目录1. 题目2. 解题1. 题目 给你一个字符串数组 words(下标 从 0 开始 计数)。 在一步操作中,需先选出两个 不同 下标 i 和 j,其中 words[i] 是一个非空字符串,接着将 words[i] 中的 任一 字符移动到 words[j] 中…

2015/4/14课堂练习

1.设计题目 书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示: 本     数量 折扣 …

python 图片背景前景分离_【绝了】用 Python 把朋友头像变表情包!

正文在日常生活中,我们经常会存取一些朋友们的丑照,在这个项目中,我们以萌萌哒的熊猫头作为背景,然后试着在背景图上加入朋友们的照片,效果如下图所示。实现步骤导入朋友的照片(前景照片);处理前景照片(缩放…

LeetCode 1899. 合并若干三元组以形成目标三元组

文章目录1. 题目2. 解题1. 题目 三元组 是一个由三个整数组成的数组。 给你一个二维整数数组 triplets ,其中 triplets[i] [ai, bi, ci] 表示第 i 个 三元组 。 同时,给你一个整数数组 target [x, y, z] ,表示你想要得到的 三元组 。 为了…

mysql snowflake_雪花算法-snowflake

雪花算法-snowflake分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID&a…

nrf52832芯片手册_nRF52832低功耗问题不完全总结

0.前言技术和经历经验都有限,以下内容仅供初学者参考和个人总结记录,不定期更新。都是使能协议栈开启BLE广播的情况协议栈:s132_nrf52_6.1.1SDK:nRF5_SDK_15.3.0_59ac3451.进入低功耗方式nRF52832进入低功耗或保持低功耗方式比较简…

openpyxl 读写 excel

import openpyxl book openpyxl.load_workbook(b.xlsx) # 读取 # sheet book["name_tab"] sheet book.active # rowsheet.max_row # 行数 columnsheet.max_column # 列数 print(row) print(column) for r in range(2, row1): # 跳过表头,行号是从1开…

iOS开发周报-- 第一期

从Java转iOS第一个项目总结 http://www.cocoachina.com/ios/20150417/11595.html icon设计探讨:图标,文字,还是图标加文字? http://www.cocoachina.com/design/20150414/11552.html 为什么整个互联网行业都缺CTO http://www.cocoa…

mysql 连接 内存溢出_mysql - MySQL中止连接未知错误 - 堆栈内存溢出

我使用多jdbc执行全表查询以进行数据迁移。 当我使用并行的75个jdbc查询每个表有近3000000行的差异表时,我发现MySQL在所有数据返回到jdbc之前中止了一个连接。慢日志:Time: 160919 9:09:38UserHost: test[test] [10.142.90.20]Thread_id: 349 Schema: …

opengl计算帧率_或许是迄今为止第一篇讲解 fps 计算原理的文章吧

前言fps,是 frames per second 的简称,也就是我们常说的“帧率”。在游戏领域中,fps 作为衡量游戏性能的基础指标,对于游戏开发和手机 vendor 厂商都是非常重要的数据,而计算游戏的 fps 也成为日常测试的基本需求。目前…

041、基于CNN的样式迁移

之——基于CNN的滤镜 目录 之——基于CNN的滤镜 杂谈 正文 1.基于CNN的样式迁移 2.实现 杂谈 通过CNN的特征提取,可以实现将一个图片的样式模式特征迁移到另一张图像上。 正文 1.基于CNN的样式迁移 就是在某些层的输出上用其他的图片进行监督。 2.实现 一般来…

LeetCode 483. 最小好进制(二分查找)

文章目录1. 题目2. 解题1. 题目 对于给定的整数 n, 如果 n 的 k(k>2)进制数的所有数位全为1,则称 k(k>2)是 n 的一个好进制。 以字符串的形式给出 n, 以字符串的形式返回 n 的 最小 好进制。 示例 1&#xff…

rds for mysql的监控指标_mysql(RDS)常用性能指标监控

Mysql1.1.1监控指标说明主要针对SQL耗时、吞吐量(QPS TPS)命中率 锁等待等指标进行监控。本来运维工具产品有以下参数:(global status里面的状态量)TPS/QPS连接数每秒SQL执行次数全表扫描数InnoDB缓冲池命中率InnoDB缓冲池使用率/脏块率InnoDB逻辑读排序记录数InnoD…

numpy 随机数_TF+Numpy减少随机性的影响

有这么一个段子:深度学习论文有一半不公开源代码,另外公开源代码的一半复现不了,鬼知道作者怎么把结果搞得这么牛逼的.其中一个原因就是深度学习使用了大量的随机数,就我一般使用的PythonTensorFlow环境而言,Python的随机性来自于numpy,而TensorFlow在初始化参数的时候也是使用…

LeetCode LCS 01. 下载插件

文章目录1. 题目2. 解题1. 题目 小扣打算给自己的 VS code 安装使用插件,初始状态下带宽每分钟可以完成 1 个插件的下载。 假定每分钟选择以下两种策略之一: 使用当前带宽下载插件将带宽加倍(下载插件数量随之加倍) 请返回小扣完成下载 n …