SQL
洛城铁匠
这个作者很懒,什么都没留下…
展开
-
@Mapper注解的使用
@Mapper注解的的作用1:为了把mapper这个DAO交給Spring管理 http://412887952-qq-com.iteye.com/blog/23926722:为了不再写mapper映射文件 https://blog.csdn.net/weixin_39666581/article/details/1038994953:为了给mapper接口 自动根据一个添加@Mapp...原创 2018-07-16 13:36:38 · 165618 阅读 · 8 评论 -
一天一篇mysql之十七:mysql中的关键字like优化
LIKE 运算符用于 WHERE 表达式中,以搜索匹配字段中的指定内容。那么like如何进行优化呢?这篇博客就简单讨论一下like的优化。不优化的情况先建立索引ALTER TABLE `actor`ADD INDEX `idx_actor_first_name` (`first_name`) USING BTREE ;不优化情况下的查询,发现并没有使用索引1.%号不放最...原创 2018-09-17 22:18:52 · 2880 阅读 · 0 评论 -
一天一篇mysql之十四:mysql中group by和distinct
DISTINCT 实际上和 GROUP BY 操作的实现非常相似,只不过是在 GROUP BY 之后的每组中只取出一条记录而已。所以,DISTINCT 的实现和 GROUP BY 的实现也基本差不多,没有太大的区别。同样可以通过松散索引扫描或者是紧凑索引扫描来实现,当然,在无法仅仅使用索引即能完成 DISTINCT 的时候,MySQL 只能通过临时表来完成。但是,和 GROUP BY 有一点差别的...原创 2018-09-10 22:55:40 · 281 阅读 · 0 评论 -
一天一篇mysql之十六:mysql中的like
MySQL LIKE 语法LIKE 运算符用于 WHERE 表达式中,以搜索匹配字段中的指定内容,语法如下:SELECT field1, field2,...fieldN FROM table_nameWHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'在 LIKE 前面加上 NOT 运算符时,表示与 LIKE 相...原创 2018-09-13 22:40:17 · 359 阅读 · 0 评论 -
一天一篇mysql之十八:mysql中的limit、between and、in
limit关键字Limit子句可以被用于强制 SELECT 语句返回指定的记录数。Limit接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。 //初始记录行的偏移量是 0(而不是 1): mysql> SELECT * FROM table LIMIT 5,10; //检索记录行6-1...原创 2018-09-19 22:42:43 · 3448 阅读 · 0 评论 -
一天一篇mysql之十九:mysql中的索引入门
索引在关系数据库中,索引是一种单独的、物理的数对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。对于任何DBMS,索引都是查询优化的最主要方式。当数据量非常大时,如果没有合适的索引,数据库的查询性能会急剧下降。MySQL中的索引分类...原创 2018-09-25 22:08:03 · 171 阅读 · 0 评论 -
一天一篇mysql之二十:mysql中的索引优化
第二章、索引与优化1、选择索引的数据类型MySQL支持很多数据类型,选择合适的数据类型存储数据对性能有很大的影响。通常来说,可以遵循以下一些指导原则:(1)越小的数据类型通常更好:越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快。(2)简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂。在MySQL中,应该用内置的日期和时间数据类型...原创 2018-09-25 22:26:55 · 176 阅读 · 0 评论 -
分析一下exists真的就比in的效率高吗
系统要求进行SQL优化,对效率比较低的SQL进行优化,使其运行效率更高,其中要求对SQL中的部分in/not in修改为exists/not exists 修改方法如下:in的SQL语句SELECT id, category_id, htmlfile, title, convert(varchar(20),begintime,112) as pubtimeFROM tab_oa...转载 2018-10-07 20:55:30 · 530 阅读 · 0 评论 -
一天一篇mysql之二十一:mysql索引之最前缀原则
最左前缀原则:顾名思义是最左优先,以最左边的为起点任何连续的索引都能匹配上,注:如果第一个字段是范围查询需要单独建一个索引注:在创建多列索引时,要根据业务需求,where子句中使用最频繁的一列放在最左边。当创建(a,b,c)复合索引时,想要索引生效的话,只能使用 a和a,b和a,b,c三种组合实例:以下是常见的几个查询:请问:想要索引最大化的使用需要至少建几个索引SELECT...原创 2018-10-15 22:47:52 · 141 阅读 · 0 评论 -
一天一篇mysql之二十二:mysql索引之MyISAM和InnoDB索引实现区别
一、索引的底层数据结构B-Tree数据结构这点从磁盘读写上给出解释,磁盘顺序读写时才能达到其宣传的数值(fio可以进行简单的读写测试),因为随机读写,机械磁盘需要旋转及寻道时间,哪怕是ssd,随机读写也需要寻址时间;那么如果将索引tree构建的层数越低,使得key相近的数据都存在一起,伴随磁盘预读特性,能更进一步提高性能。那么使用B+Tree的关键就是Tree层数低(3层),有序的数据...原创 2018-10-15 23:10:05 · 192 阅读 · 0 评论 -
select for update是属于排他锁,也属于悲观锁
1、InnoDB行锁是通过给索引上的索引项加锁来实现的,只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁。2、由于MySQL的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但是如果是使用相同的索引键,是会出现锁冲突的。应用设计的时候要注意这一点。 3、当表有多个索引的时候,不同的事务可以使用不同的索引锁定不同的行,另外,不论是使用主键索...原创 2019-02-11 17:34:25 · 3286 阅读 · 0 评论 -
一天一篇mysql之十三:mysql中group by和order by
概述“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。“ ORDER BY”如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。用法group bymysql>...原创 2018-09-09 22:33:03 · 436 阅读 · 1 评论 -
一天一篇mysql之十五:mysql中完美去重
表里面有很多垃圾数据,现在删除保留其中一条(是否重复判断基准为多个字段)方案一:DELETEFROM vitae aWHERE (a.peopleId, a.seq) IN ( SELECT peopleId, seq FROM vitae GROUP BY peopleId, seq HAVING count(*) > ...原创 2018-09-11 22:16:05 · 240 阅读 · 0 评论 -
一天一篇mysql之十二:mysql中group by的使用建议
一、建议使用一个索引来满足Order By子句。在条件允许的情况下,笔者建议最好使用一个索引来满足Order By子句。如此的话,就可以避免额外的排序工作。这里笔者需要强调的一点是及时Order By子句不确切匹配索引,但是只要Where子句中所有未使用的索引部分和所有额外的 Order by子句中的列为常数,此时就可以使用索引。具体的来说,推荐如下的查询语句。1、select * fro...原创 2018-09-04 22:32:58 · 166 阅读 · 0 评论 -
一天一篇mysql之一:认识mysql
mySQL(关系型数据库管理系统)MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。MySQL是一种关系数据库管理系统,关系...原创 2018-08-26 22:24:21 · 1227 阅读 · 1 评论 -
一天一篇mysql之二:sql语句的学习
一、SQL简介1:什么是SQL?A:SQL指结构化查询语句 B:SQL使我们有能力访问数据库 C:SQL是一种ANSI(美国国家标准化组织)的标准计算机语言结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新...原创 2018-08-26 22:46:59 · 274 阅读 · 0 评论 -
一天一篇mysql之三:sql语句分类细讲
一、DDL:Data Definition Language数据定义语言,用于定义和管理 SQL数据库中的所有对象的语言1.CREATE 创建2.ALTER 修改3.DROP 删除4.TRUNCATE 5.COMMENT 注释6.GRANT 授权7.REVOKE 收回已经授予的权限二、DML:Data Manipulation Language数据操作语言,SQL中处理数据等...原创 2018-08-27 22:28:24 · 115 阅读 · 0 评论 -
一天一篇mysql之九:mysql中group by关键字
Group ByGroup By语句从英文的字面意义上理解就是”根据(by)一定的规则进行分组(Group)”。 它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。group by是跟MySQL的聚合函数一起使用的,通过把一个列(column)分成组(group),来分别使用聚合函数。 常见聚合函数:AVG() 求平均数 COUNT(...原创 2018-08-30 22:49:40 · 747 阅读 · 0 评论 -
一天一篇mysql之十:mysql中group by的执行原理
Group By实现原理以及作用mysql中group by实现方式有三种,松散索引,紧凑索引,临时文件(文件排序)。在网上看了相关的介绍,大部分介绍都比较晦涩难懂,这里说下我的理解。在学习SQL优化时,我们都知道可以对group by进行优化的方式就是对group by引用的字段建立索引。当group by引用多个字段时,我们建立的相应的索引也应包含多个字段。对group by操...原创 2018-08-30 22:56:47 · 3617 阅读 · 0 评论 -
一天一篇mysql之四:mysql的数据类型以及如何选择数据选择
一:sql 将数据类型分为四大类:数值类型,字符串,日期时间型,枚举类型 1、数值类型可以划分为数值类型:整型,浮点十进制类型。所谓的“十进制”是指decimal和numeric,他们是同一类型的。严格地说,它不是一个数字类型,因为他们实际上是作为字符串存储,每一个数字值(包括小数点)占一个字节的存储空间,所以这种类型的消耗大量的存储空间,但它的优点是它的价值不会失去做浮点数计算精...原创 2018-08-27 22:39:29 · 822 阅读 · 2 评论 -
一天一篇mysql之五:SQL语句补充
1.drop、truncate和delete的区别1.Delete的用法用于满足条件的某一行,或者删除表内的所有行Delete * from table 表名 where……Delete from table 表名2.Truncate的用法Truncate:删除数据表中的数据(仅数据表中的数据,不删除表)。truncatetable 数据表名称 “ TRUNCATE...原创 2018-08-28 22:07:58 · 134 阅读 · 0 评论 -
一天一篇mysql之六:mysql中select语句的执行顺序
可以从一个比较齐全的sql开始分析:SELECT DISTINCT <select_list>FROM <left_table><join_type> JOIN <right_table>ON <join_condition>WHERE <where_condition>GROUP BY <group_b...原创 2018-08-28 22:21:50 · 267 阅读 · 0 评论 -
一天一篇mysql之七:mysql中in和exist选择
关于exist和in,网上已经有了太多太多的介绍,总结一下对于exist和in子表数据量比外表数据量少,使用in。 子表数据量比外表数据量大,使用exists。 子表与外表数据量大小差不多,用in与exists的效率相差不大。对于not in和not exists使用not in 会内外表都全表扫描;使用not exists还能用上内表(子表)的索引。所以,一定建议使用Not e...原创 2018-08-29 22:37:17 · 654 阅读 · 0 评论 -
一天一篇mysql之八:mysql中not in和not exist选择
两者用法用法:1、对于not exists查询,内表存在空值对查询结果没有影响;对于not in查询,内表存在空值将导致最终的查询结果为空。2、对于not exists查询,外表存在空值,存在空值的那条记录最终会输出;对于not in查询,外表存在空值,存在空值的那条记录最终将被过滤,其他数据不受影响。、具体可参考https://blog.csdn.net/liuxilil/art...原创 2018-08-29 22:44:22 · 5805 阅读 · 0 评论 -
一天一篇mysql之十一:mysql中order by关键字
order by 的作用当使用SELECT语句查询表中的数据时,结果集不按任何顺序进行排序。要对结果集进行排序,请使用ORDER BY子句。 ORDER BY子句允许:对单个列或多个列排序结果集。 按升序或降序对不同列的结果集进行排序。下面说明了ORDER BY子句的语法:SELECT column1, column2,...FROM tblORDER BY column1 ...原创 2018-09-04 22:22:14 · 363 阅读 · 0 评论 -
mybatisPlus填坑之逻辑删除
网上大部分的关于mybatisPlus的逻辑删除的配置介绍都是有问题的,原因可能是官网已经做了更新!!!错误如图:正确的配置是:SpringBoot 配置方式: application.yml 加入配置(如果你的默认值和mp默认的一样,该配置可无): yml文件(区别是多了一个路径db-config,同学们细看了) mybatis-plus: global-c...原创 2019-02-21 10:49:10 · 27334 阅读 · 9 评论