C军

不玩博客了!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  SQLServer:查询反模式

SQL查询反模式
摘要:一、目标:全文搜索 任何存储文本的应用都有针对这个文本进行单词或词组搜索的需求。我们使用数据库存储越来越多的文本数据,同时也需要搜索速度越来越快。Web应用尤其需要高性能和高扩展性数据库搜索技术。 SQL基本原理就是一列中的单个数据是原子性的。也就是说,当我们对两个值进行比较时,通常是把两个值当... 阅读全文
posted @ 2013-10-18 18:59 逆心 阅读(1173) 评论(0) 推荐(0) 编辑

摘要:一、减少输入 程序员都喜欢使用通配符,如: SELECT * FROM Person 又或者省略字段名: INSERT INTO Person VALUES('10','张飞'...)二、捷径会让你迷失方向 对于以上代码,如果你仅仅是在开发过程中用于查看一下数据库信息,又或者你只是写个小程序自己玩玩,这是没有什么问题的。 但是如果一旦你习惯于这样编写正式生产环境中的代码,那问题就随之而来了。 1、破坏代码重构 如果数据库更改了,比如增加了一列: ALTER TABLE Person Add Age int 这下糟糕了,你程序中所有的 INSERT INTO Pe 阅读全文
posted @ 2013-10-17 18:42 逆心 阅读(835) 评论(0) 推荐(0) 编辑

摘要:一、问题提出 随机数在数据库中是经常用到的系统。 例如,一个广告系统希望随机选择一个广告来显示。随机推荐相关文章等等。 在SQL Server中查找随机数最简单的方法为: SELECT TOP 1 * FROM Person ORDER BY NEWID() 以上SQL语句的执行计划如下: 以上这种方法,需要对整个表进行一次排序,而且还无法有效地使用索引。加入我们只需要前几条数据,那么好不容易对整个结果集完成了排序,但绝大多数都浪费了。 以上的方式缺点如下: 随着数据量的增加,随机数的产生会变慢。 数据主键并不连续,并且随机数生成算法并没有考虑到这一点。二、合理使用反模... 阅读全文
posted @ 2013-10-15 17:21 逆心 阅读(710) 评论(0) 推荐(0) 编辑

摘要:为了最简单地说明问题,我特地设计了一张这样的表。 一、GROUP BY单值规则 规则1:单值规则,跟在SELECT后面的列表,对于每个分组来说,必须返回且仅仅返回一个值。 典型的表现就是跟在SELECT后面的列,如果没有使用聚合函数,必须出现在GROUP BY子句后面。 如下面这个查询报错... 阅读全文
posted @ 2013-10-12 18:45 逆心 阅读(5218) 评论(1) 推荐(4) 编辑

摘要:一、提出问题 不可避免地,我们都数据库总有一些字段是没有值的。不管是插入一个不完整的行,还是有些列可以合法地拥有一些无效值。SQL 支持一个特殊的空值,就是NULL。 在很多时候,NULL值导致我们的程序出现报错的现象,于是很多人就开始拒绝NULL值,想各种各样的方法来避免使用NULL值,但是很遗憾,NULL值恰恰就是满足我们的需要用于表示空值的。 空值经常存在于我们的数据库当中: 例如一个在职员工的离职时间。 例如一辆电力驱动的车的燃油消耗比。二、反模式 很多人对于NULL值感觉到恐惧,原因在于不知道什么时候就会因为一个NULL冒出一个报错。实际上都是由于对NULL值的理解有误引... 阅读全文
posted @ 2013-10-11 22:08 逆心 阅读(1029) 评论(0) 推荐(0) 编辑