
MySQL
MySQL数据库相关问题
@Eleven
一辈子很短,努力的做好两件事就好;第一件事是热爱生活,好好的去爱身边的人;第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱,加油!
展开
-
配置log4j记录druid的sql和慢sql
转自:https://blog.youkuaiyun.com/rocklee/article/details/90675601log4j.logger.druid.sql.Statement=DEBUG,logsql#普通sql不要显示在consolelog4j.additivity.logsql=falselog4j.appender.logsql=org.apache.log4j.FileAppenderlog4j.appender.logsql.layout=org.apache.log4j.Patte转载 2021-07-02 09:48:00 · 593 阅读 · 0 评论 -
索引失效的情况
简述什么时候没用1.有or必全有索引;2.复合索引未用左列字段;3.like以%开头;4.需要类型转换;5.where中索引列有运算;6.where中索引列使用了函数;7.如果mysql觉得全表扫描更快时(数据少);什么时没必要用1.唯一性差;2.频繁更新的字段不用(更新索引消耗);3.where中不用的字段;4.索引使用<>时,效果一般;详述(转)索引并不是时时都会生效的,比如以下几种情况,将导致索引失效:如果条件中有or,即使其中有部分条件带索引也不会使用(这也是为...转载 2020-11-23 11:49:15 · 185 阅读 · 0 评论 -
SQL存储过程使用介绍
在数据库编程过程中经常会用到存储过程 , 相比 SQL 语句 , 存储过程更方便 , 快速 , 安全 ; 先将存储过程的相关介绍和使用方法总结如下 ;1. 存储过程的概念 存储过程 (Stored Procedure) 是在大型数据库系统中 , 一组为了完成特定功能的 SQL 语句集 , 存储在数据库中 , 经过第一次编译后再次调用不需要再次编译 , 用户通过指定存储过程的名字并给出参数 (如果该存储过程带有参数) 来执行它 , 存储过程是数据库中的一个重要对象 ; 存储过程中可以包含 逻辑控制语句 和转载 2020-10-30 03:56:35 · 432 阅读 · 1 评论 -
Mysql:对索引的个人理解
个人理解:当某一列的数据被加上索引之后,会形成一种数据结构,比如说是二叉树这种结构(真实的索引并不是这种数据结构,但是相近),每个节点的数据以key-value的形式进行存储,key就是每个节点的真实数据值,value就是这个真实数据值对应的存储地址,因为当形成这种二叉树数据结构之后会加快某个字段值的查找,然后迅速找到这个字段值的value(存储地址),从而快速查找到当前数据。...原创 2020-10-23 10:04:15 · 104 阅读 · 0 评论 -
B-Tree 和 B+-tree 的区别?
一、B树知识点:mysql对每一个节点分配的内存大小约为:16kb查询方式如图2,也就是说图1这样一个节点,mysql分配的内存为16kb图2二、B+树(mysql底层是使用的B+树)三、B-Tree 和 B±tree 的区别1、B-Tree非叶子节点和叶子节点都有数据,B±tree只有叶子节点有数据(叶子节点包含了所有数据)。原因:非叶子节点只存储索引,不存储数据,有利于每个节点存储更多索引。2、B-Tree叶子节点之间不存在指针,B±tree叶子节点之间存在指针。四、拓展:m原创 2020-09-12 16:26:43 · 722 阅读 · 0 评论 -
MYSQL:查看数据库当前连接数,以及数据库最大连接数,数据库配置
介绍几个查看数据库连接的命令:查看数据库当前连接数,可以看到ip,谁连接了,连接了多少个,处于什么状态,连接时长等等SHOW FULL processlist; 可以根据id杀死一些无用的进程, 如:(但要注意,root账号有杀死大部分进程的权限,其他账号只能杀死自己使用的进程)kill 4598;查看数据库配置的最大连接数show variables like '%max_connections%';查看数据库所有配置 show global variables;如果需要在众多原创 2020-08-25 15:53:39 · 1857 阅读 · 0 评论 -
杀死锁表进程的脚本
mysql_cmd=mysqlhost=127.0.0.1user=abcpassword=123port=3306kill_process=$($mysql_cmd -h $host -u $user -p $password -P $port -e 'show processlist' | grep -i "lock" | awk '{if(NR>1'"${check}"') print $1}');echo ${kill_process}for process_id in $ki原创 2020-07-14 15:10:40 · 217 阅读 · 0 评论 -
mysql数据库中查询表是否被锁
查询锁表进程:1、查询是否锁表show OPEN TABLES where In_use > 0;2、查询进程show processlist查询到相对应的进程===然后 kill id补充:查看正在锁的事务SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;查看等待锁的事务SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;...原创 2020-07-14 15:03:09 · 2361 阅读 · 0 评论 -
MySQL优化(一):sql解析过程、索引、b树、b+树
1、sql优化原因:性能低、执行时间太长、等待时间太长、SQL语句欠佳(连接查询)、索引失效、服务器参数设置不合理(缓冲、线程数)2、sql的解析过程和索引介绍a.SQL : 编写过程: select dinstinct ..from ..join ..on ..where ..group by ...having ..order by ..limit .. 解析过程: ...原创 2020-04-12 16:16:57 · 597 阅读 · 0 评论 -
select count(*)和select count(1)的区别
1、 一般情况下,Select Count (*)和Select Count(1)两着返回结果是一样的2、 假如表沒有主键(Primary key), 那么count(1)比count(*)快,3、 如果有主键的話,那主键作为count的条件时候count(主键)最快4、 如果你的表只有一个字段的话那count(*)就是最快的5、count(*) 跟 count(1) 的结果一样,都包...转载 2020-04-02 13:37:44 · 32591 阅读 · 3 评论 -
MySQL索引及其实现原理(包含图示)
一、索引的本质索引是帮助Mysql高效获取数据的排好序的数据结构。索引数据结构:1、二叉树2、红黑树3、Hash表4、B-Tree例:如下面一张表无索引:查找 col2=89的数据,会进行全表扫描,从第一个开始往下面扫描,直到找到col2=89为止,需要查找至少6次。select * from t where t.col2=89;有索引(二叉树):如图右侧所画,二叉树的...原创 2020-03-30 22:23:39 · 3294 阅读 · 3 评论 -
优化sql经验
1、加索引加索引的SQL语句:ALTER TABLE tbl_post_status_historyADD INDEX `index_employee_id`(`employee_id`) USING BTREE;加索引的位置:where后面的判断条件加索引例:sql语句select count(*) from tbl_post_status_history tpsh,tbl_em...原创 2020-03-27 18:40:42 · 143 阅读 · 0 评论 -
sql查询某个时间段内的请假记录
前言:1、目的:求某个时间段内的请假记录。2、已知条件:时间段的开始时间是:2019-12-19 06:00:00时间段的结束时间是:2019-12-20 06:00:00请假开始时间参数:startTime请假结束时间参数:endTime3、sql语句条件写法wherestartTime < 2019-12-20 06:00:00andendTime > 20...原创 2020-01-02 11:21:26 · 1712 阅读 · 0 评论 -
MySQL时间格式转换函数
一、DATE_FORMAT()方法注:当前年份是2019-12-25SELECT DATE_FORMAT(NOW(),'%Y') YEAR输出结果:2019SELECT DATE_FORMAT(NOW(),'%y') YEAR输出结果:19SE...原创 2019-12-25 10:40:24 · 453 阅读 · 0 评论 -
一个搜索框可搜索具有上下级关系的任意一个关键字进行搜索
说明:module 模块表里面存在bank_id、project_id,搜索框可通过模块名、项目名和银行名搜索。三者之间的关系是银行包含项目、项目包含模块。SELECT m.* FROM module m where m.name LIKE concat('%',#{keyWord, jdbcType=VARCHAR},'%') or m.bank_id in (sele...原创 2019-12-11 09:51:46 · 243 阅读 · 0 评论 -
mysql allowMultiQueries=true允许批量更新
mysql allowMultiQueries=true允许批量更新这个做项目时发现的问题,之前操作mysql数据库时,只涉及到单条语句的更新操作,这次的需求需要将多条数据更新,为了提高接口的效率,决定一次更新所有。但是写完之后调试的时候,总是说插入失败,刚开始以为是因为数据量太大的缘故,找了各种解决方法都无效。后来直接查了一下mysql批量更新失败,才知道是因为项目没有配置allowMulti...转载 2019-12-02 17:12:23 · 1331 阅读 · 1 评论 -
使用sql语句实现查询某人的排名,分数相同排名相同
一、第一种形式排名如:4个学生的分数分别是:100、90、90、80排名结果为:第一、第二、第二、第三SELECT count(DISTINCT score) FROM tbl_score WHERE cast(score as DECIMAL(6,2)) >= ( SELECT ...原创 2019-10-16 18:49:35 · 4452 阅读 · 1 评论 -
sql查询某个时间段内的数据(包括开始时间,结束时间)!
解释:1、DATE_FORMAT作用:用来格式化数据,最好将比较的两个数据格式化一个格式。2、order by COMMENT_TIME desc作用:根据COMMENT_TIME时间属性降序3、limit #{startRow, jdbcType=INTEGER} , #{pageSize, jdbcType=INTEGER}作用:进行分页查询,startRow表示第几页,pageSize...原创 2019-10-24 12:55:42 · 32364 阅读 · 1 评论