sql优化
andy2cloud
这个作者很懒,什么都没留下…
展开
-
浅析MySQL中exists与in的使用
exists对外表用loop逐条查询,每次查询都会查看exists的条件语句,当 exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就为真,返回当前loop到的这条记录,反之如果exists里的条 件语句不能返回记录行,则当前loop到的这条记录被丢弃,exists的条件就像一个bool条件,当能返回结果集则为true,不能返回结果集则为 false 如下:转载 2015-06-08 23:30:35 · 461 阅读 · 1 评论 -
MySql数据库的优化-MySql中is NULL、ISNULL()和IFNULL()运行速度的比较
在查询过程中,我们经常用到非空和is null的查询,为了更高效的查询,我们应该知道那种方法更快。在上一篇中,我们已经添加了一些数据。根据这些数据我们就可以来做一些验证。第一步,is NULL要比ISNULL()的比较SELECT * from 表名 where 字段名 is NULLSELECT * from 表名 where ISNULL(字段名)由上面可以看出,is NULL要比ISNULL...转载 2018-04-27 15:51:48 · 6987 阅读 · 1 评论 -
MySQL_插入更新 ON DUPLICATE KEY UPDATE
平时我们在设计数据库表的时候总会设计 unique 或者 给表加上 primary key 的限制条件.此时 插入数据的时候 ,经常会有这样的情况:我们想向数据库插入一条记录: 若数据表中存在以相同主键的记录,我们就更新该条记录。 否则就插入一条新的记录。逻辑上我们需要怎么写:$result = mysql_query('select * from xxx where id = 1');$r...转载 2018-05-11 18:27:01 · 298 阅读 · 0 评论 -
mysql count(*),count(1)与count(column)区别
count(*)对行的数目进行计算,包含NULLcount(column)对特定的列的值具有的行数进行计算,不包含NULL值。count()还有一种使用方式,count(1)这个用法和count(*)的结果是一样的。性能问题1.任何情况下SELECT COUNT(*) FROM tablename是最优选择;2.尽量减少SELECT COUNT(*) FROM tablename WHERE CO...转载 2018-03-22 15:39:54 · 876 阅读 · 0 评论 -
MySQL调优三步曲(慢查询、explain profile)
mysql profile explain slow_query_log分析优化查询 在做性能测试中经常会遇到一些sql的问题,其实做性能测试这几年遇到问题最多还是数据库这块,要么就是IO高要么就是cpu高,所以对数据的优化在性能测试过程中占据着很重要的地方,下面我就介绍一些msyql性能调优过程中经常用到的三件利器: 1、慢查询 (分析出现出问题的sql) 2、Explain转载 2017-07-09 18:25:53 · 686 阅读 · 0 评论 -
一次非常有意思的 SQL 优化经历
我用的数据库是mysql5.6,下面简单的介绍下场景 课程表 create table Course( c_id int PRIMARY KEY, name varchar(10) ) 数据100条 学生表: create table Student( id int P转载 2017-07-21 13:02:35 · 258 阅读 · 0 评论 -
Mysql性能优化案例-覆盖索引分享
场景 产品中有一张图片表,数据量将近100万条,有一条相关的查询语句,由于执行频次较高,想针对此语句进行优化 表结构很简单,主要字段: 复制代码代码如下: user_id 用户ID picname 图片名称 smallimg 小图名称 一个用户会有多条图片记录 现在有一个根据user_id建立的索引:uid 查询语句也很简单:取转载 2017-07-15 12:15:32 · 496 阅读 · 0 评论 -
使用pt-query-digest分析mysql slow query log
孔子说“工欲善其事,必先利其器”, 今天就介绍一下percona toolkit中的pt-query-digest。 下载地址: http://www.percona.com/software/percona-toolkit/ 官方文档: http://www.percona.com/doc/percona-toolkit/pt-query-digest.html转载 2017-07-15 11:33:58 · 554 阅读 · 0 评论 -
慢查询日志详解
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查转载 2017-07-15 10:35:15 · 2283 阅读 · 0 评论 -
单机数据库优化
数据库优化有很多可以讲,按照支撑的数据量来分可以分为两个阶段:单机数据库和分库分表,前者一般可以支撑500W或者10G以内的数据,超过这个值则需要考虑分库分表。另外,一般大企业面试往往会从单机数据库问起,一步一步问到分库分表,中间会穿插很多数据库优化的问题。本文试图描述单机数据库优化的一些实践,数据库基于mysql,如有不合理的地方,欢迎指正。 1、表结构优化转载 2017-07-13 23:58:08 · 377 阅读 · 0 评论 -
mysql多表关联更新和in效率问题
#重新下发投放配置,只下放投放状态的单子 1.单表where查询更新 UPDATE bus_execute_sync b SET b.flag = 0 WHERE b.execid IN(SELECT id FROM bus_execute a WHERE a.status IN('10','20','21','22','23','24','25')); 2.表关联更新 UPDATE bu原创 2015-12-11 18:51:41 · 6135 阅读 · 0 评论