作者:何甜甜在吗 来源:http://1t.click/a7Gm 在项目开发过程中经常遇到时间处理,但是你真的用对了吗,理解阿里巴巴开发手册中禁用static修饰SimpleDateFormat...在多并发情况下使用SimpleDateFormat需格外注意 SimpleDateFormat除了format是线程不安全以外,parse方法也是线程不安全的。...calb中中属性设置cal c、返回设置好的cal对象 但是这三步不是原子操作 多线程并发如何保证线程安全 - 避免线程之间共享一个SimpleDateFormat对象,每个线程使用时都创建一次SimpleDateFormat...=> 较好的方法 1.Date对时间处理比较麻烦,比如想获取某年、某月、某星期,以及n天以后的时间,如果用Date来处理的话真是太难了,你可能会说Date类不是有getYear、getMonth这些方法吗...有的我都有,Date没有的我也有,日期选择请Pick Me ====================== Update On 2019/09/18 ================= SpringBoot中应用
例如在where子句中numeric型和int型的列的比较。 8. 在子查询中前后必须加上括号。...查询时应尽量减少多余数据的读取,通过使用where子句来减少返回的记录数。 2. 如果在语句中有not in(in)操作,应尽量用not exists(exists)来代替。...= order.customerId) 使用exists的效率依赖于匹配度,inner join效率比较稳定> 11....字符串连接应使用“||”符号,而不应使用“+”。“+”是SQLServer语法,Oracle和DB2支持“||”,Hibernate转化为SQLServer时,会自动将“||”转为“+”。 3....截取字符串长度函数应使用substr,起始位置为1表示从头开始。因为db2中substr起点为1,0会报错;在SqlServer数据库中使用的是substring需要进行转换。 5.
下面我就自己的工作经验,分享一下如何写出更快的 SQL 一、查看执行计划来选择更快的 SQL 在写 SQL 的初期,你可能不知道到底是使用 UNION ALL 好还是 FULL JOIN 好,是使用 EXISTS...,B.CUSTNAME) AS CUSTNAME FROM CUSTINFO_A A FULL JOIN CUSTINFO_B B ON A.CUSTID = B.CUSTID 在 db2 的说明查询中查看其成本...WHERE A.CUSTID = b.CUSTID) 在 db2 的说明查询中查看其成本: ?...BH =1 在 db2 的说明查询中查看其成本: ?...在这种情况下, 使用EXISTS(或 NOT EXISTS)通常将提高查询的效率. 在子查询中,NOT IN 子句将执行一个内部的排序和合并。
内连接中的相等连接, select a.ename, d.loc from emp a, dept d where a.deptno = d.deptno; 可显式使用JOIN子句,INNER则是可选项...如果习惯在FROM子句中,而不是WHERE子句中,写连接逻辑,则可以使用JOIN子句。 如果从可阅读性角度来说,表关联的时候,关联条件写在ON子句中,过滤条件写在WHERE子句中,会更让人理解。...如果deptno是主键,不需要改,如果不是,则需要使用DISTINCT来确保每个在emp表中缺少的deptno值只出现一次,如下所示, select distinct deptno from dept...EXISTS/NOT EXISTS和关联子查询一起使用时,SELECT中的列,不重要,之所以使用了NULL,是为了让注意力集中在子查询的连接操作上,而不是SELECT的列上。 5. ...新增连接查询而不影响其他连接查询 如果是DB2、MySQL、PG以及SQL Server、Oracle 9i以上,可使用, select e.ename, d.loc, eb.received from
mongoDB是最接近与关系型数据库的开源NoSQL数据库,几乎绝大多数常用的命令或语句在SQL中都可以找到相应的对应或映射。...Server Database Client mongo mysql sqlplus DB-Access DB2 Client 三、...} ) status char(1), //也可以使用下面的方式来创建集合...true } } ) FROM users or db.users.find( { user_id: { $exists...status = "A" 六、记录更新对照 SQL语句 mongoDB java script shell -------
exists db2' list_table=$(mysql -uroot -p123456 -Nse "select table_name from information_schema.TABLES...DROP DATABASE db1; 2.4、使用库 USE db2; 三、表操作 3.1、创建表 CREATE TABLE ts_user ( id bigint(20) unsigned NOT...5.2、比较运算符 SELECT 语句中的条件语句经常要使用比较运算符。通过这些比较运算符,可以判断表中的哪些记录是符合条件的。...在集合中 select * from t_user where user_id in ('1','2') 查询用户ID为 1 或者 2 的信息 NOT IN 不在集合中 select * from t_user...;merge合并;temptable临时表 select_statement:表示select语句 **[WITH [CASCADED | LOCAL] CHECK OPTION]**:表示视图在更新时保证在视图的权限范围之内
在关系型数据库中,我是一名索引 (Index)。 大家都知道,通常情况下我都会带来查询性能的提高。 需要指出的是,我并不是多多益善。 我类似于一本书的目录,只不过书的内容是静态的,而数据是动态变化的。...可以想像,如果书中的内容页频繁变化,那么更新书的目录也会花掉不少成本。所以说,我不是多多益善。 我是数据库中一个排序的数据结构,以协助快速查询、更新数据库表中数据。...从逻辑上来说,按照这种谓词中给定的条件,DB2 数据库可以用索引访问的方式来在索引树中快速找到一个或多个相匹配的记录。...需要注意的是,可以使用索引的谓词 这个概念关注的是谓词本身的写法使得通过索引来访问数据成为可能,而它并不能保证在数据库中合适的索引是存在的,也不能保证 DB2 数据库在运行时一定会通过索引访问的方式来筛选满足这个谓词条件的数据...我的另一面 建立索引会降低更新(update), 插入(insert), 删除(delete)表中数据的速度。因为此时 DB2 需要同时更新表上的索引,若同一张表上有多个索引,情况会更糟。
SQL语句的WHERE子句中使用函数 在 WHERE 子句中应该尽量避免在列上使用函数,因为这样做会使该列上的索引失效,影响SQL 语句的性能。...< TIMESTAMP '2009-9-25 00:00:00.0'; Oracle 尽量避免在 SQL语句中使用 LIKE 前面,我们介绍了尽量避免在SQL语句的WHERE子句中使用函数,因为这样做会使该字段上的索引失效...1 把 USER_INFO 表导出生成一个文件,要求性别为男或女,而不是1和2,怎么办?...方法1 使用三条语句,先把2更新成3,接着把1更新成2,最后把3更新成1,是不是很麻烦?...CASE使用案例 3 假设让你把张三的生日更新成1949-10-1,李四的生日更新成1997-7-1等,类似这样的更新有很多。该怎么办呢?非常简单,大多数人会这么做。
SQL 语句用于取回和更新数据库中的数据。...DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。...当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。...B:EXCEPT 运算符 EXCEPT运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。...数值1 and 数值2 9、说明:in 的使用方法 select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’) 10、说明:两张关联表,删除主表中已经在副表中没有的信息
存量数据:在弹性伸缩作业开始前,数据节点中已有的数据。 增量数据:在弹性伸缩作业执行过程中,业务系统所产生的新数据。 3....ShardingSphere-Scaling目前不是一个独立的产品,而是以ShardingSphere-Proxy中的一个配置项提供相应功能。... 目标66、102执行: drop database if exists db1; drop database if exists db2; create database db1; create...这是个全局 DistSQL 命令,返回所有状态的Scaling作业,而不是只针对回当前逻辑数据库的。SHOW SCALING STATUS 命令查询某个迁移作业的进度。...监控迁移作业 本例中因为我们的源和目标使用同一个Proxy集群,第1-3步已经在上一步“准备测试用例环境”中完成了。
8 可以针对不同的逻辑开始使用 SKIP LOCKED, NOWAIT 功能,这将解决某些业务中(例如订票,及相关类似业务中的并发问题) 接下来,演讲者提出 MYSQL 8 支持 JSON DATA...EXISTS 变化为 anti-semi-join 的方式来处理。...其中对于 ANTI-SEMI-JOIN 中提到 not exists 和 not in 将直接转换为 anti-semi-join 在查询在内部被重写为antijoin,它返回类中不匹配的每一行的一个实例...很高效率很低,因为每次都会根据索引来分批读取数据进行处理,而HASH JOIN 将是改变这样不明智处理的改革方式,在其中一个表中对要比对的值进行HASH MAP 的建立,然后进行值的比对,如果你是开发则知道这样的比对会比较快...,我们建议使用HASH JOIN 或强制HASH JOIN 因为我们已经将其添加到了 HITS中,来代替BNL (block NESTED LOOP),当你使用MYSQL 8.018 处理类似事务的时候你会很惊喜这样的方式
=203部门在employee中没有对应的员工,发现employee中id=6的员工在department表中没有对应关系 多表连接查询 两张表的准备工作已完成,比如现在我要查询的员工信息以及该员工所在的部门...3:子查询中可以包含:IN、NOT IN、ANY、ALL、EXISTS 和 NOT EXISTS等关键字 4:还可以包含比较运算符:= 、 !...在使用EXISTS关键字时,内层查询语句不返回查询的记录。而是返回一个真假值。...* from employee where exists (select id from department where id=200); +----+----------+--------+---...dept_id=205,False mysql> select * from employee where exists (select id from department where id=204
); 2、排序 在 db 中,我们经常需要按分数,人数,销售额等进行排名,有 Oracle, DB2 中可以使用 RANK 函数进行排名,不过在 MySQL 中 RANK 函数未实现,这种情况我们可以使用自连接来实现...,假设有如下商品,我们重新格式化一样,如果 city 为 null,代表商品不在此城市发行,但我们在展示结果的时候不想展示 null,而想展示 'N/A', 可以这么做: SELECT COALESCE...MAX(item) FROM Items; -- 这样写能用到索引 SELECT MAX(item_no) FROM Items; 注意:极值函数参数推荐为索引列中并不是不需要排序,而是优化了排序前的查找速度...,原因主要有两点 使用 GROUP BY 子句进行聚合时会进行排序,如果事先通过 WHERE 子句能筛选出一部分行,能减轻排序的负担 在 WHERE 子句中可以使用索引,而 HAVING 子句是针对聚合后生成的视频进行筛选的...八、减少中间表 在 SQL 中,子查询的结果会产生一张新表,不过如果不加限制大量使用中间表的话,会带来两个问题,一是展示数据需要消耗内存资源,二是原始表中的索引不容易用到,所以尽量减少中间表也可以提升性能
三、SELECT语句务必指明字段名称 SELECT *增加很多不必要的消耗(cpu、io、内存、网络带宽);增加了使用覆盖索引的可能性;当表结构发生改变时,前断也需要更新。...两边的字段中,如果有一个不是索引字段,而其他条件也不是索引字段,会造成该查询不走索引的情况。...所以IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。 关于not in和not exists,推荐使用not exists,不仅仅是效率问题,not in可能存在逻辑问题。...如下图这个sql语句,扫描的行数成百万级以上的时候就可以使用分段查询 十二、避免在 where 子句中对字段进行 null 值判断 对于null的判断会导致引擎放弃使用索引而进行全表扫描。...STRAIGHT_JOIN来强制连接顺序,在STRAIGHT_JOIN左边的表名就是驱动表,右边则是被驱动表。在使用STRAIGHT_JOIN有个前提条件是该查询是内连接,也就是inner join。
对于这种情况,Sybase和SQL SERVER的解决办法是使用UPDATE...SET...FROM...WHERE...的语法,实际上就是从源表获取更新数据。...在 SQL 中,表连接(left join、right join、inner join 等)常常用于 select 语句,其实在 SQL 语法中,这些连接也是可以用于update 和 delete 语句的...,在这些语句中使用 join 还常常得到事半功倍的效果。...Oralce和DB2都支持的语法: UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID) MS SQL...MS SQL SERVER的写法: UPDATE A SET A1 = B1, A2 = B2, A3 = B3 FROM A, B WHERE A.ID = B.ID 在Oracle和DB2中的写法就比较麻烦了
,尽量少用or ---- or两边的字段中,如果有一个不是索引字段,而其他条件也不是索引字段,会造成该查询不走索引的情况。...所以IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。 关于not in和not exists,推荐使用not exists,不仅仅是效率问题,not in可能存在逻辑问题。...A表 Left join B表 on where a.id = b.id where b.id is null 取出的结果集如下图表示,A表不在B表中的数据 ?...十二、避免在 where 子句中对字段进行 null 值判断 ---- 对于null的判断会导致引擎放弃使用索引而进行全表扫描。...STRAIGHT_JOIN来强制连接顺序,在STRAIGHT_JOIN左边的表名就是驱动表,右边则是被驱动表。在使用STRAIGHT_JOIN有个前提条件是该查询是内连接,也就是inner join。
两边的字段中,如果有一个不是索引字段,而其他条件也不是索引字段,会造成该查询不走索引的情况。...所以IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。 关于not in和not exists,推荐使用not exists,不仅仅是效率问题,not in可能存在逻辑问题。...如下图这个SQL语句,扫描的行数成百万级以上的时候就可以使用分段查询: ? 12、避免在where子句中对字段进行null值判断 对于null的判断会导致引擎放弃使用索引而进行全表扫描。...14、避免在where子句中对字段进行表达式操作 比如: select user_id,user_project from user_base where age*2=36; 中对字段就行了算术运算,这会造成引擎放弃使用索引...STRAIGHT_JOIN来强制连接顺序,在STRAIGHT_JOIN左边的表名就是驱动表,右边则是被驱动表。在使用STRAIGHT_JOIN有个前提条件是该查询是内连接,也就是inner join。
两边的字段中,如果有一个不是索引字段,而其他条件也不是索引字段,会造成该查询不走索引的情况。...所以IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。 关于not in和not exists,推荐使用not exists,不仅仅是效率问题,not in可能存在逻辑问题。...如下图这个SQL语句,扫描的行数成百万级以上的时候就可以使用分段查询: ? 12、避免在where子句中对字段进行null值判断 对于null的判断会导致引擎放弃使用索引而进行全表扫描。...14、避免在where子句中对字段进行表达式操作 比如: select user_id,user_project from user_base where age*2=36; 中对字段就行了算术运算,...STRAIGHT_JOIN来强制连接顺序,在STRAIGHT_JOIN左边的表名就是驱动表,右边则是被驱动表。在使用STRAIGHT_JOIN有个前提条件是该查询是内连接,也就是inner join。
领取专属 10元无门槛券
手把手带您无忧上云