数据库
现役码农一个
主要是记录一些工作的总结和使用过的技术要点,相互学习
展开
-
数据库count(*)和count(1)的区别
一般情况下select count(*) 与select count(1)两者返回的结果一致。但是针对表中主键的有无,情况会有不同。无主键:count(1)比count(x)快有主键:count(主键)最快count(*)与count(1)都包括null统计,而count(column)不包括null统计原创 2017-11-20 15:53:39 · 10980 阅读 · 0 评论 -
mysql分组语法group by获取数据技巧----group_concat
项目中有一个需求是,通过分组字段A,然后拿到A中最小的字段B的值。试了子查询和一些其他方法,都不能很好地解决问题。然后去看了mysql文档找到了这个函数。可以解决问题,虽然不是很简单。先介绍一下这个语法:group_concat:以A分组,将B所有的值以逗号隔开查询出来;select content,GROUP_CONCAT(id ORDER BY id desc SE...原创 2019-04-04 11:05:04 · 1092 阅读 · 0 评论 -
mysql实现中文根据拼音排序
最近项目遇到一个要求,jqueryeasyui中的combobox下拉数据要根据输入的中文拼音排序。如,输入“北”,依次出现“北斗”,“北京”,“北京1”;输入字段搜索是combobox自带功能,把editable代开就可以了$('.test').combobox('options').editable = 'true';//设置可编辑重点还是在后台的查询,这里使用了mysql的...原创 2018-12-03 19:51:43 · 1146 阅读 · 0 评论 -
ON DUPLICATE KEY UPDATE使用和注意要点
最近在整理项目里面的存储过程,主要是添加注解和归类。发现了一个之前没怎么使用过的sql语法。ON DUPLICATE KEY UPDATE。去查看了一些资料。如下(使用的mysql) INSERT INTO student ( id, name, age, class)( SELECT id, name, age, class FROM student ...原创 2018-11-15 15:58:41 · 7827 阅读 · 0 评论 -
MySQL Explain详解
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪...转载 2018-09-03 16:16:14 · 159 阅读 · 0 评论 -
一次mysql数据库执行结果慢的梳理过程
背景:项目执行一个删除操作的时候发现耗时较长,但是不是必现。之前一直忙于赶进度,对这个问题没有仔细查看。项目进入维护阶段,决定花些时间看看到底是怎么回事通过查看后台的代码,怀疑两个地方,一个是项目中一个用于拼接字符串的工具类,一个是数据库中调用的SP,后来通过代码测试排除了第一中可能。在测试服务器上面进行复现,发现出现的概率还是比较高的。确实是一个SP执行过慢1,show processlis...原创 2017-12-12 20:10:06 · 527 阅读 · 0 评论 -
解决存储过程报错返回信息
作为一名维护过存储过程的开发人员,被存储过程的问题定位折磨那是常事。下面总结一个帮助定位的方法。存储过程sp中添加了回滚代码DECLARE EXIT HANDLER FOR SQLEXCEPTIONBEGIN ROLLBACK;END;这样报错数据会回滚,但是错误信息却不能返回,导致定位困难。mysql提供了一种方式获取返回的错误信息,添加如下代码即可GET ...原创 2018-01-06 12:52:33 · 2778 阅读 · 0 评论 -
解决mysql不区分大小写的问题
项目在上线测试的时候,测试那边尝试创建了一个产品hbb,提示失败,但是这个产品系统中实际是没有的。为此我们定位了一下,发现存在一个HBB。然后重复测试发现这里的判断好像没有区分大小写。查找了资料发现默认是不区分大小写的。如果要区分需要主动添加一些参数:一般情况下mysql不区分大小写mysql> select * from product where _name = 'hbb';+-----...原创 2018-04-01 13:55:40 · 3011 阅读 · 0 评论 -
MySQL索引详解和优化技巧
索引(MySQL中也叫“键(Key)")在数据越大的时候越重要。规模小、负载轻的数据库即使没有索引,也能有好的性能,但是当数据增加的时候,性能就会很快下降。理解索引如何工作的最简单的方式就是把索引看成一本书。为了找到书中一个特定的话题,你须要查看目录,它会告诉你页码。索引会让查询锁定更少的列在InnoDB中,只有事务提交后才会解锁索引包含了来自于表中某一列或多个列的值。如果索引了多列数据,...原创 2018-03-03 14:45:25 · 438 阅读 · 0 评论 -
mysql索引优化原则
选择优化的数据类型简单的原则:1,更小通常更好一般来说,要试着使用能正确地存储和表示数据的最小类型。更小的数据类型通常更快,因为它们使用了更少的磁盘空间、内存和CPU缓存,而且需要的CPU周期也更少。但是要确保不会低估需要保存的值,在架构中的多个地方增加数据类型的范围是一件极其费时费力的工作。如果不确定需要什么数据类型,就选择你认为不会超出范围的最小类型。(如果系统不是非常繁忙或不会...原创 2018-03-03 14:41:40 · 956 阅读 · 0 评论 -
通过命令将sql查询的结果导出到具体文件
有时候我们需要将一些查询结果导出到具体文件中然后对结果进行处理。但是在mysql命令行中不支持直接将文件导出。查询资料发现mysql提供一种命令可以实现直接导出数据到文件,mysql -uroot -proot test -e "select * from demo" > test_demo.txt -e后面跟sql查询语句箭头重定向到制定文件夹(linux)...原创 2017-11-23 17:04:50 · 27129 阅读 · 1 评论 -
mysql 查询语句优化总结
1,在写sql时,如果sql中包含where语句,那么这里会有以下几种情况a,where语句中字段是有索引的,这时explain中extra显示using index(最佳)b,字段没有索引,这时extra显示using where相当于返回全部行,然后再进行筛选mysql在3种情况下使用where,最好到最坏1,对索引查找应用where子句来消除不匹配行,这个发生在存储引擎层2,使用...原创 2018-02-11 22:31:55 · 192 阅读 · 0 评论 -
mysql 使用show processlist定位问题
Show processlist;mysql> show processlist\G*************************** 1. row *************************** Id: 226588 User: root Host: localhost:64271 db: testCommand: Sleep T...原创 2018-02-11 22:30:15 · 2668 阅读 · 0 评论 -
mysql sort 性能优化
通过一些常用的查询语句分析方法,对查询语句进行优化。1,explain,这个绝对是神器。在一个select语句前添加explain,会得到以下内容id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE a ALL null null null ...原创 2018-02-11 22:25:10 · 582 阅读 · 0 评论 -
mysql问题定位方法
1,show processList;显示哪些线程正在运行2,mysql> show status like 'Threads%';+-------------------+-------+| Variable_name | Value |+-------------------+-------+| Threads_cached | 58 || Threads_conne...原创 2018-02-11 22:22:09 · 590 阅读 · 0 评论 -
mysql中ifnull()方法的用法
一般我们在使用ifnull()方法的时候,都是类似下面的语句:IFNULL(expr1,expr2)如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值select ifnull(name,'no name') from person;将查询到的结果中的null转化为指定的字符串,但是其实在where查询部分...原创 2017-11-28 11:54:46 · 28879 阅读 · 0 评论 -
mysqldump导出包含存储过程(SP)的数据库文件
之前自己一直是使用mysqldump导出文件,最近项目中数据库设计到SP的时候,发现导出的数据中没有包含SP。mysqldump默认不会直接导出SP和函数,需要添加指定的参数,如SP需要加 -R ; mysqldump -uroot -proot -R test > test.sql除了-R之外,mysql还提供了其他的几种参数供使用: -n...原创 2017-11-23 17:12:34 · 3597 阅读 · 0 评论 -
一次sql优化的过程--拆解sql
早上接到产品反馈,用户反应系统中有一个常用列表刷新太慢。找到列表刷新的log位置。less xxx.log通过"/"搜索定位到列表刷新的sql。发现这个sql在只有几千条数据的情况下执行了5s左右。确实有问题。通过查看该sql的执行计划,定位慢的原因。explain select * from a left join b on a.id=b.uid where a.age=1...原创 2019-09-16 18:52:09 · 458 阅读 · 0 评论