随笔分类 -  数据库

摘要:大多数的数据库引擎(到现在据我们所知的除了sqlite的每个sql数据库引擎)都使用静态的、刚性的类型,使用静态类型,数据的类型就由它的容器决定,这个容器是这个指被存放的特定列。Sqlite使用一个更一般的动态类型系统,sqlite中,值的数据类型跟值本身相关,而不是与它的容器相关。Sqlite的动态类型系统和其他数据库的更为一般的静态类型系统相兼容,但同时,sqlite中的动态类型允许它能做到一些传统刚性类型数据库所不可能做到的事。1.存储类和数据类型每个存放在sqlite数据库中(或者由这个数据库引擎操作)的值都有下面中的一个存储类:lNULL,值是NULLlINTEGER,值是有符号整形 阅读全文
posted @ 2012-09-26 10:39 ansionchen 阅读(155) 评论(0) 推荐(0)
摘要:在SQL中用NOT IN会影响性能,导致的主要原因就是索引无效,所以最好是将NOT IN改为其他方式实现。没修改之前的NOT IN写法:[sql]view plaincopySELECTDISTINCTt2.a_idFROMtemp_bt2WHEREt2.a_idNOTIN(SELECTDISTINCTt4.a_idFROMbASt3,temp_bASt4WHEREt4.a_id=t3.a_id)修改为LEFT JOIN写法:[sql]view plaincopySELECTDISTINCTt6.a_idFROM(SELECTt2.a_id,t5.a_idAStempIdFROMtemp_bt 阅读全文
posted @ 2012-06-07 00:30 ansionchen 阅读(171) 评论(0) 推荐(0)
摘要:在SQL中用NOT IN会影响性能,导致的主要原因就是索引无效,所以最好是将NOT IN改为其他方式实现。没修改之前的NOT IN写法:[sql]view plaincopySELECTDISTINCTt2.a_idFROMtemp_bt2WHEREt2.a_idNOTIN(SELECTDISTINCTt4.a_idFROMbASt3,temp_bASt4WHEREt4.a_id=t3.a_id)修改为LEFT JOIN写法:[sql]view plaincopySELECTDISTINCTt6.a_idFROM(SELECTt2.a_id,t5.a_idAStempIdFROMtemp_bt 阅读全文
posted @ 2012-06-07 00:30 ansionchen 阅读(410) 评论(0) 推荐(0)
摘要:exists 和 in 的执行效率是一样的 很多资料上都显示说,exists要比in的执行效率要高,同时应尽可能的用not exists来代替not in。但事实上,我试验了一下,发现二者无论是前面带不带not,二者之间的执行效率都是一样的。因为涉及子查询,我们试验这次用SQL SERVER自带的pubs数据库。运行前我们可以把SQL SERVER的statistics I/O状态打开。 (1)select title,price from titles where title_id in (select title_id from sales where qty >30) 该句的执行结 阅读全文
posted @ 2012-06-07 00:28 ansionchen 阅读(212) 评论(0) 推荐(0)
摘要:exists 和 in 的执行效率是一样的 很多资料上都显示说,exists要比in的执行效率要高,同时应尽可能的用not exists来代替not in。但事实上,我试验了一下,发现二者无论是前面带不带not,二者之间的执行效率都是一样的。因为涉及子查询,我们试验这次用SQL SERVER自带的pubs数据库。运行前我们可以把SQL SERVER的statistics I/O状态打开。 (1)select title,price from titles where title_id in (select title_id from sales where qty >30) 该句的执行结 阅读全文
posted @ 2012-06-07 00:28 ansionchen 阅读(425) 评论(0) 推荐(0)