随笔分类 -  sql

使用sql concat拼接更新语句
摘要:例子: select a.id,concat('update sljr_jrxj.loan_borrow set status=3,fadada_status=0 where borrow_user_id=',a.id,' and borrow_nid=''',borrow_nid,''';')fr 阅读全文
posted @ 2017-11-10 12:02 _故乡的原风景
对数据库进行先查询后插入的解决方案
摘要:场景: 多线程高频率请求插入某一条数据,要求这条数据不能被重复插入。应该如何做? 阅读全文
posted @ 2017-08-04 00:46 _故乡的原风景
ORM规约
摘要:1、查询的时候一律不要使用*,会增加解析器的成本,有可能和resultMap不一致。 2、POJO类的布尔属性一律不要is,数据库字段名字一定要is_xxx。 3、不要用resultClass作为返回参数,配置映射关系,使字段和DO类解耦。 4、sql xml参数使用#{value} #param# 阅读全文
posted @ 2017-08-02 23:08 _故乡的原风景
mysql 第一次查询时慢,第二次执行同一个查询时变快
摘要:1、mysql默认的query_cache是打开的,第一次查询走的是数据文件,第二次就是query_cache,查询方式:show variables like '%query_cache%',如果数据更新会重新缓存。 2、如果mysql使用的数据引擎是innodb那么第一次查询走数据文件,第二次b 阅读全文
posted @ 2017-07-30 18:54 _故乡的原风景
mysql数据库规约
摘要:一、建表规约 1、如果表达是否概念时,字段名使用is_xxx,0表示是,1表示否,如果确定字段一定是非负数使用unsigned。 2、表名和字段名必须使用小写或数字,禁止数字开头,避免两个下划线中间只有数字。 3、表名不使用复数名词,表名只代表实体,并不代表实体个数 4、禁止使用保留字,如:desc 阅读全文
posted @ 2017-07-29 23:52 _故乡的原风景
sql中的in
摘要:在sql中谨慎使用 oracle10g要求in里面最多1000个元素 mysql中为可在my.ini中配置选项,参数名max_allowed_packet 使用show variables like '%max_allowed_packet%' 如果过多可以创建索引之后使用exist 阅读全文
posted @ 2017-07-27 23:09 _故乡的原风景
sql连接查询和子查询哪一种效率更高
摘要:一般来讲连接查询效率更高,因为子查询会多次遍历数据,而连接查询只遍历一次,但是如果数据量较少的话子查询更加容易控制 还有就是子表数据量较大的时候会使用子查询! 阅读全文
posted @ 2017-04-12 23:50 _故乡的原风景
sql优化的几个注意点
摘要:一、常用优化策略 1、使用表的别名,把别名应用于每个column的前面,这样减少字段歧义和引起不必要的语法错误; 2、使用exist替换in,使用not exist替换not in,因为not in执行了一个内部的排序和合并,它对子查询的全表进行了遍历 3、使用索引提高效率 4、避免在索引上计算 5 阅读全文
posted @ 2017-02-19 23:38 _故乡的原风景
各种数据库的分页查询
摘要:1、oracle 通过子查询rownum方式处理 内层查询控制最大值,外层查询控制最小值 示例: select * from ( select a.*,rownum rn from table where rn < endrow) a where a.rn > startrow 2、mysql 通过 阅读全文
posted @ 2017-02-19 23:06 _故乡的原风景
sql去除查询的重复数据
摘要:1.存在两条完全相同的纪录 这是最简单的一种情况,用关键字distinct就可以去掉 example: select distinct * from table(表名) where (条件) 2.存在部分字段相同的纪录(有主键id即唯一键) 如果是这种情况的话用distinct是过滤不了的,这就要用 阅读全文
posted @ 2017-01-10 12:51 _故乡的原风景