只要百度not in和not exists,清一色的not exists的效率优于not in,毕竟not exists只是去强调是否返回结果集,只是一个bool值,而not in是返回一个结果集,是由大量大量数据构成的.所以一开始我在做的时候写的是not in,然后前辈告诉我效率太低,改成了not exists,结果查询速度特别慢.为什么呢?首先来看看sql语句,本身sql语句特别长,只写出where条件中的not in和not exists筛选部分语句. not in: where subs…
SQL Server 批量 停用/启用 外键约束 今天百度知道上面,看到这样一个要求: 现在有一个库,有很多张表想要删除一张表的记录的时候,由于外键关联太多,所以,没法删除相应的记录,谁能帮忙写个存储过程,就是先删除所有表的主,外键,然后进行删除表记录,然后再恢复之前所有的主外键. 一眼看上去,需要批量删除所有外键,并不困难.但是要求批量所有外键之后,一切处理完毕后,还要把外键重建回来.这个有点复杂了. 心想,如果删除之后,还要重建的.那还不如一开始就不删除,只是暂时 “不可用”.等一系列的操作…
目的是: 保证不同的Picker只创建一次,多次创建Picker系统不会自己销毁,X掉一个之后后面可能会出现下一个. 保证实现需求的情况下,优化代码,提高效率. 1.如果picker中的内容为定值 var wnddir = [{ text: "顺风", value: 0 }, { text: "逆风", value: 1 }]; var wnddirPicker = new $.PopPicker();----生成picker wnddirPicker.setDat…
varchar长度短的情况下,基于这个字段的group by效率更高.所以开发在设计表的时候要使该字段在满足业务需求的情况下尽可能的小. ps:本想找源码看看代码那是怎么处理的,直接用vim看文件太累了,还是把家里的ubuntu电脑带来,下载源码用eclipse跟吧....吐槽微软的vs,,,,,,,太麻烦,还tm要安装windows最新版本 因为group by是需要排序的,上面的测试中也是只有排序的地方可能走的方式不同,所以我就直接在filesort.cc中filesort方法设置断点跟踪.…
sql如下 select t.id, t.value, tt.sort as sortno from ENGINEERING_TYPE t left join ENGINEERING_TYPE tt on t.parentid = tt.id order by sortno, t.sort sql很简单,相当于自连接 ,返回行数12行,非常小,但是运行5s左右才出结果 看一下执行计划 可以看到,表与表之间走了hash join,我们的一般规律在返回行数较大时,超过万行时,通常使用hash joi…
熟悉这个用户下的四张表,是必要的. 查看所有表名: SELECT * FROM tab; 查看每张表的结构: DESC 表名称: 1.部门表:dept no  名称 类型 描述 1 DEPTNO NUMBER(2) 部门编号,两位数字组成. 2 DNAME VARCHAR2(14) 部门名称,最多有14个字符组成 3 LOC VARCHAR2(13) 部门所在位置 2.雇员表:emp no  名称 类型 描述 1 EMPNO NUMER(4) 雇员的编号,有四位数字组成 2 ENAME VARC…
测试环境  mssql 08  +win7    数据 30W条 二〇一六年十月二十九日 09:04:43 结论:1>主键> *>可空列    推测未论证: 根据情况优先选择 顺便提一下 如果有分类列建立了索引 count将会很快…
在数据库中单独创建一张表,保存当前存储状态,“存储过程”  设置访问条件root初始值为“0” 如果root值不为0的时候就不可访问并进行相关操作. 在事务执行前将root值设置为1,事务结束后将root值设置为0.…
sql语句的优化:在大多数情况下,为了更快的遍历表结构,优化器主要是根据定义的索引来提高性能.但是在不合理的SQL语句中,优化器会删去索引进而使用全表扫描, 一般而言,这种sql被称为劣质sql,所以我们在编写的过程中,要注意哪种类型的sql会导致优化器失去作用. 一.操作符的优化 1. IN 操作符 或者not in(IN => exists []) ( 使用in写出的sql语句比较容易以及清晰易懂,但是效率比较低,Oracle查询的过程中,一般会试图将其转化成多个表的连接, 如果转化不成功则…
mysql下sql语句 update 字段=字段+字符串   mysql下sql语句令某字段值等于原值加上一个字符串 update 表明 SET 字段= 'feifei' || 字段; (postgreSQL 用 || 来连贯字符串) MySQL连贯字符串不能利用加号(+),而利用concat. 比方在aa表的name字段前加字符'x',利用: update aa set name=concat('x',name) 来自:http://www.cnblogs.com/feifei/archive…