文章分类 - sql
摘要:1、查询表的数据量大小 2、MySQL查询阻塞语句 3、统计数据库中访问量前10的IP
阅读全文
摘要:一、概述 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值(long_query_time,单位:秒)的SQL语句。默认情况下,MySQL不启动慢查询日志。本文简单介绍如何开启慢查询日志,如何用mysqldumpslow分析慢查询。 二、慢查询日志设置
阅读全文
摘要:一、三大范式通俗解释: (1)简单归纳: 第一范式(1NF):字段不可分; 第二范式(2NF):有主键,非主键字段依赖主键; 第三范式(3NF):非主键字段不能相互依赖。 (2)解释: 1NF:原子性。 字段不可再分,否则就不是关系数据库;; 2NF:唯一性 。一个表只说明一个事物; 3NF:每列都
阅读全文
摘要:一、先说下查询sql格式 sql格式: select 列名/* from 表名 where 条件 group by 列 having 条件 order by 列 asc/desc; 这里牵涉到一个查询执行顺序的问题. 单表查询执行顺序: select sex, count(Sex) as count
阅读全文
摘要:MySQL在5.6版本的时候增加了to_base64和from_base64函数,在此之前没有内部函数,只能使用User-Defined-Function。
阅读全文
摘要:1、简介 Multi-Version Concurrency Control,多版本并发控制,每次操作,copy一份所要改的数据作为副本,副本之间通过一个版本号字段区分,并将副本的版本号+1,如果是更新操作,数据在副本上修改完后,要更新时候查看原纪录的版本号是否是副本版本号-1,是,更新,否(说明有
阅读全文
摘要:模糊查询一般形式 其中关于条件,SQL提供了四种匹配模式: 1、% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。 比如 SELECT * FROM [user] WHERE u_name LIKE '%三%' 将会把u_name为“张三”,
阅读全文
摘要:问题原因 当进行分页时,MySQL 并不是跳过 offset 行,而是取 offset+N 行,然后放弃前 offset 行,返回 N 行。例如 limit 10000, 20。mysql排序取出10020条数据后,仅返回20条数据,查询和排序的代价都很高。那当 offset 特别大的时候,效率就非
阅读全文
摘要:说起MySQL的查询优化,相信大家积累一堆技巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视
阅读全文
摘要:一、问题定位过程 1、问题现象 点击系统中某个列表功能模块发现很慢,开启log日志发现使用到了如下的sql语句来统计符合要求的总记录数,以进行分页使用 2、explain分析 手动执行该sql发现竟然用了21.18秒,怀疑是未使用索引或者表数据量过大,于是用explain语句分析 3、改写sql 当
阅读全文
摘要:今天在使用 SELECT INTO FROM 创建mysql数据表的时候,运行相关 sql 语句的时候却一直返回 [Err] 1327 - Undeclared variable: …… 这种错误,实在不解,经过查询关资料才知道,原来 mysql 数据库是不支持 SELECT INTO FROM 这
阅读全文
摘要:首先举个例子来说: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条、2推荐、3热点、4图文等等 。现在有篇文章他既是头条,又是热点,还是图文,type中以 1,3,4 的格式存储。那我们如何用sql查找所有type中有4的图文类型的文章呢?? 这就要我们的 find_in_set 出
阅读全文
摘要:有这样一个需求场景:统计所有用户使用公交卡的用卡数据(要满足一定的查询条件)到一张临时表。用户的公交卡用卡数据表是分表记录的(每天一张表,表名后缀加上当天日期,如:user_info_20190120)。 修改成游标循环表列表:
阅读全文
摘要:本文总结了mysql常见的三种循环方式:while、repeat和loop循环。还有一种goto,不推荐使用。 参考文章:https://blog.csdn.net/yili0000a/article/details/80515098
阅读全文
摘要:我们知道,在MySQL的储存过程中,一般的输入参数为各种数据类型,如数值型,字符型等。那么,能不能让输入参数等于表名呢?答案是肯定的,那就是使用MySQL提供的PREPARE语法。 关于PREPARE的具体使用方法,可以参考网址:https://dev.mysql.com/doc/refman/5.
阅读全文
摘要:1、游标(cursor)介绍 有数据缓冲的思想:游标的设计是一种数据缓冲区的思想,用来存放SQL语句执行的结果。 先有数据基础:游标是在先从数据表中检索出数据之后才能继续灵活操作的技术。 类似于指针:游标类似于指向数据结构堆栈中的指针,用来pop出所指向的数据,并且只能每次取一个。 2、游标优缺点
阅读全文
摘要:网上搜了下 GROUP_CONCAT 数据截断的问题,答案都指向了 group_concat_max_len 这个参数,它的默认值正好是1024。可以直接在数据库中通过下面的命令查看这个默认值: 所以解决办法只要调整 group_concat_max_len 最大值就行了。 或者: 在C:\Prog
阅读全文
摘要:mysql 本身并没有 split 函数,但我们可以自定义函数实现。 用法: 例子:
阅读全文
摘要:一、需要优化的查询:使用explain 出现了Using temporary; 有分页时出现了Using filesort则表示使用不了索引,需要根据下面的技巧来调整语句 rows过多,或者几乎是全表的记录数; key 是 (NULL); possible_keys 出现过多(待选)索引。 二、驱动
阅读全文
摘要:案例:查询语句中select from where group by having order by的执行顺序 1.查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by 其中select和from是必须的
阅读全文