sql 语句 INSERT IGNORE INTO table(aaa,bbb) SELECT '1111','2222' FROM DUAL WHERE NOT EXISTS( ' ) mybatis 中代码 <insert id="addItemCharacteristic" parameterType="com.orderalliance.entity.CharacteristicDTO"> <!--INSERT INTO table (it…
转载https://www.cnblogs.com/zhang-bo/p/9138151.html 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from…
在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计.SQL语句.java等层面的解决方案. 解答: 1)数据库设计方面: a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. b. 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后…
原文:读取数据表中第m条到第n条的数据,SQL语句怎么写? 对于MySQL或者Oracle来说,如果实现从Table 表中取出第 m 条到第 n 条的记录操作,我们需要TOP函数(不是所有的数据库都支持TOP函数):Select Top子句 但是,你能想到几种方法? (1)使用not in Select TOP n-m+1 *  FROM Table  Where (id NOT IN (Select TOP m-1 id FROM Table )) (2)使用exists Select TOP…
在实际项目中,当MySQL表的数据达到百万级别时候,普通查询效率直线下降,而且当使用的where条件较多,其查询效率是让人无法容忍的.假如一个taobao订单查询详情要几十秒,可想而知的用户体验是多差. 查询效率慢的原因:1:没有加索引或者索引失效 where条件使用如下语句会索引失效:null.!=.<>.or连接.in(非要使用,可用关键字exist替代)和not in.'%abc%':使用参数:num=@num.表达式操作:where num/2=100.函数操作:where subst…
这篇文章主要介绍了MySQL的表分区,例如什么是表分区.为什么要对表进行分区.表分区的4种类型详解等,需要的朋友可以参考下 一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了.如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区.当然也可根据其他的条件分区. 二.为什么要对表进行分区为了改善大型表以及具有各种访问模式的表的可伸缩性,可管理性和提高数据库效率.分区的一些优点包括:      1).与单个磁…
原文地址:https://blog.csdn.net/zgcr654321/article/details/82156277 安装完成MySQL后,打开MySQL workbench8.0. 可以看到MySQL Connections下面是我们设置的MySQL本地登录账号,这个账号是我们在安装MySQL过程中设置的,一般命名为root,端口为3306,密码默认为空.双击进入. 要注意一点的是,在MySQL中,database(数据库)==schema(模式).在左下角schema下方区域鼠标右键…
写在文章前:本系列文章用于博主自己归纳复习一些基础知识,同时也分享给可能需要的人,因为水平有限,肯定存在诸多不足以及技术性错误,请大佬们及时指正. 11.存储过程 ​ 存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合.想要实现相应的功能时,只需要调用这个存储过程就行了(类似于函数,输入具有输出参数). 优点: 预先编译,而不需要每次运行时编译,提高了数据库执行效率. 封装了一系列操作,对于一些数据交互比较多的操作,相比于单独执行SQL语句,可以减少网络通信量. 具有可复用性,减少了数…
比如 insert into table a (a1,b1)values("a1",''); 对于这种情况,因为表里存的是'',其实是没有内容的,要查询这个字段,不能直接使用 select * from a where b1=''; select * from a where b1 <> null; sql中判断非空不能用等号,因为null在sql中被看作特殊符号,必须使用关键字 is和not应该如此使用: select * from A where b1 is null…
1.没有创建索引,或者没有正确使用索引;2.存在死锁的情况,从而导致select语句挂起; 3.返回不必要的列,如很多人喜欢在程序中使用select * from 这样会查询表或视图中的所有字段,如果表或视图的数量比较大时候,就会浪费系统资源,应该只要返回必要的列 ;4.在select语句中使用where子句,限制返回的记录数 ;5.使用TOP关键字,限制返回的记录数 ;6.在使用like关键字的时候需要注意通配符的使用方法 ;7.慎用union关键字,因为它会影响到查询的效率 ;8.慎用Dis…