![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
二、mysql
包含mysql调优等知识
lovesman
这个作者很懒,什么都没留下…
展开
-
mysql 0和1上不要建立索引
对于这种简单数据的列,创建索引反而比没有创建索引时查询还要慢。因为通过索引读取数据行是随机磁盘读取,相对于不使用全表扫描的连续磁盘读取,要慢很多。虽说加了索引之后读取的数据块少了,但是对于只有0和1这样区分度极差的索引,花费在随机磁盘读取上的大量开销会抵消这部分好处,何况索引会对增删改的性能造成影响,因此,不建议为该列单独添加索引。...原创 2021-06-17 08:51:00 · 647 阅读 · 0 评论 -
Mysql 中null与空值‘‘的区别
1、空值时不占用空间的;2、null其实是占用空间的;打个比方来说,你有一个杯子,空值代表杯子是真空的,NULL代表杯子中装满了空气,虽然杯子看起来都是空的,但是区别是很大的。NULL 其实并不是空值,而是要占用空间,所以mysql在进行比较的时候,NULL 会参与字段比较,所以对效率有一部分影响。...原创 2021-06-17 08:47:52 · 610 阅读 · 0 评论 -
sql语句中on和where的区别
on:不会过滤数据;where:可以过滤数据;在使用left jion时,on和where条件的区别如下:1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉...原创 2021-05-25 09:07:17 · 683 阅读 · 0 评论 -
mybatis支持一次执行多条sql语句配置
mysql 默认是不支持,多条SQL同时执行的,但是可以在连接配置中添加一个配置,便可以支持,“allowMultiQueries=true”。原创 2021-04-30 11:27:51 · 1017 阅读 · 0 评论 -
MyBatis获取插入记录的自增长字段值
第一步在Mybatis Mapper文件中添加属性“useGeneratedKeys”和“keyProperty”,其中keyProperty是Java对象的属性名!<insert id="insert" parameterType="Spares" useGeneratedKeys="true" keyProperty="id"> insert into spares(spares_id,spares_name, spares_ty原创 2021-04-02 18:43:04 · 299 阅读 · 0 评论 -
spring-mybatis.xml 里mapperLocations 配置多路径
<property name="mapperLocations"> <array> <value>classpath*:mapper-offline/*Mapper.xml</value> <value>classpath*:mapper-offline/bussiness-offline/*Mapper.xml</value> </array></property..原创 2021-04-02 17:54:52 · 1590 阅读 · 0 评论 -
Integer类型在mapper.xml中正确判断
1、问题Integer类型传值为0时,在Mapper.xml中被 条件过滤2、正确写法Integer类型只做“null”的判断,不做空的判断<if test="status !=null> and status = #{status,jdbcType=INTEGER} </if>原创 2021-04-02 16:53:23 · 1515 阅读 · 0 评论 -
Mysql Date和DateTime类型查询总结
1、在MySQL字段中有Date和DateTime类型,但是java中没有DateTime类型。解决办法:(1)在mybatis插入数据时只要将实体的属性设置成Timestamp就会对应mysql的DateTime类型,<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>sql查询语句编写:<update id="updateTaskByTime"> update原创 2021-04-02 16:42:39 · 937 阅读 · 0 评论 -
PreparedStatement防止sql注入原理
PreparedStatement的使用PreparedStatement的使用PreparedStatement防止sql注入原理PreparedStatement防止sql注入原理原创 2020-09-27 17:56:38 · 345 阅读 · 0 评论 -
mybatis 一次执行多条SQL
mybatis 一次执行多条SQL转载 2020-08-04 08:52:43 · 265 阅读 · 0 评论 -
MySQL出现Waiting for table metadata lock的原因以及解决方法
MySQL出现Waiting for table metadata lock的原因以及解决方法转载 2020-08-04 08:41:48 · 277 阅读 · 0 评论 -
mysql——添加字段和修改字段
添加字段table_name 修改为 你自己的 表名;colunmu_name 修改为 自己的列名;字段属性根据实际情况填写;alter table table_name add colunmu_name TINYINT unsigned null;修改字段table_name 修改为 你自己的 表名;colunmu_name 修改为 自己的列名;字段属性根据实际情况填写...原创 2020-05-08 09:40:26 · 298 阅读 · 0 评论 -
mysql查询数据库所有的表名和列名
查询数据库中所有的表名直接使用下面的查询语句,“数据库名称”替换为你自己的“dbname”即可;select table_name from information_schema.tables where table_schema='数据库名称' and table_type='base table';查询指定数据库中指定表的所有字段名直接使用下面的查询语句,“数据库名称”替换为你自己的...原创 2020-05-08 09:09:36 · 1692 阅读 · 0 评论 -
Mapper文件中不等号的写法
问题:mapper需要写如下的sql语句:select * from A where A.id <> 1写过mapper文件的应该都知道,在mapper中是不能直接这么些。解决方法1、转义<——小于号>——大于号< > ——不等于select * from A where A.id <>...原创 2020-05-04 10:24:48 · 3068 阅读 · 0 评论 -
Mysql基本练习
SELECT DATABASE();use mybase;//创建表create TABLE exam (id INT(11) PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),English INT,Chinese INT,Math INT);SHOW TABLES;//查看表结构DESC exam;//向表中添加一列ALTER ...原创 2020-01-10 17:32:35 · 315 阅读 · 0 评论 -
六、mysql索引优化实战二
分页查询优化不太好的分页查询写法:SELECT * from employees limit 10000,10;explain执行计划结果:分析:这条sql看似只查询了10条记录,实际上会读取10010条记录,然后抛弃前10000条,保留你需要的后10条,执行效率低。优化方案:1、根据自增且连续的主键排序的分页排序注:该优化有两个前提:(1)主键自增且连续(2)结果是按照主键排序否则优化后的sql执行结果与优化前不一致。优化后的sqlSELECT * from employees原创 2020-08-08 08:35:54 · 273 阅读 · 0 评论 -
五、mysql——常见sql语句优化
Order by与Group by优化case1EXPLAIN SELECT * FROM employees WHERE name='lilei' AND position ='manager' order by age;分析:根据最左前缀原则,中间字段不能断,所以只使用了‘name’索引;从Extra字段不是 fileosrt可以看出来age索引列也参与了排序过程。case2EXPLAIN SELECT * FROM employees WHERE name='lilei' order b原创 2020-08-05 19:28:22 · 303 阅读 · 0 评论 -
四、mysql索引优化实战
存储过程CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄',`position` varchar(20) NOT NULL DEFAULT '' COMMENT '职位',`hire_time` timestamp NOT原创 2020-08-05 18:52:22 · 279 阅读 · 0 评论 -
三、mysql——索引最佳实践
sql存储过程CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名',`age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄',`position` varchar(20) NOT NULL DEFAULT '' COMMENT '职位', `hire_time` timestamp原创 2020-08-03 23:05:33 · 303 阅读 · 0 评论 -
二、mysql——Explain工具介绍和查看mysql运行时间
使用的数据库脚本DROP TABLE IF EXISTS `actor`;CREATE TABLE `actor` (`id` int(11) NOT NULL,`name` varchar(45) DEFAULT NULL, `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO `actor` (`id`, `name`, `upda原创 2020-08-02 16:12:33 · 1471 阅读 · 0 评论 -
一、myql索引底层数据结构与算法
索引是帮助mysql高效获取数据的排好序的数据结构。索引数据结构一、二叉树当数据是有序递增的时候,二叉树退化为链表结构,查询效率低,比如查询数字5,需要查询5次。二、红黑树查询5的时候需要查询4次B树叶节点具有相同的深度,叶节点的指针为空;所有的索引元素不重复节点中的数据索引从左到又依次递增查询5的话,需要查询3次。四、B+树非叶子节点不存储data,只存储索引(存在冗余),可以放更多的索引(mysql中用数据页存储,不存data,可以放更多的索引)。叶子节点包含所有的索引原创 2020-07-28 23:49:25 · 268 阅读 · 0 评论 -
七、Mysql事务隔离机制和锁机制
ACIDA:原子性——事务是一个整体,要么全部执行,要么全部不执行;C:一致性——从数据角度看,事务中对于数据的操作,都要保持一致状态,以保证数据的完整性;I:隔离性——事务之间的操作相互不影响;D:持久性——对于数据的修改是持久性的,即使出现系统故障也能够保持。并发事务带来的问题1、脏写(更新丢失)其他事务最后的跟新操作覆盖前面事务所做的操作2、脏读事务A读取到了事务B已经修改但是没有提交的数据;3、不可重复读事务A内部不同时候的相同的查询语句,查询出来的结果不同;4、幻读事务A原创 2020-08-09 20:22:55 · 315 阅读 · 0 评论