随笔分类 - 数据库 / sql 2005
摘要:想找ColumnName叫CRE_USR的欄位在那些Table呢? (For SQL Server)SELECT o.name, o.* FROM syscolumns c INNER JOIN sysobjects o ON o.id = c.id WHERE c.name = 'CRE_USR' AND o.xtype = 'U'可以參考 syscolumns 及 sysobjects。xtypechar(2)物件類型。可以是下列其中一種物件類型:C = CHECK 條件約束D = 預設值或 DEFAULT 條件約束F = FOREIGN KEY 條件約束L
阅读全文
摘要:今天 Terry大 介紹給小弟這個 SQL Sentry Plan Explorer 工具,可以用來看SQL Plan。什麼? 用SSMS看不就很清楚了嗎?這個Tool有把SQL Plan幫我們整理的更清楚,如下圖所示(看了粉感動呢!),而且又是免費的,真是佛心來著!裝好 Plan Explorer 後,可再裝Management Studio Add-In (有Support到SQL 2012哦!),就可在SSMS中的執行計畫按右鍵來開啟SQL Sentry Plan Explorer 工具。趕快下載(SQL Sentry Plan Explorer 工具)來試試吧
阅读全文
摘要:有朋友在FB上問到,他們將日期的分隔符號都置換成空字串後的字串,要如何將它再轉回成DateTime呢?例如日期 2013/04/02 14:08:37 會轉成 20130402140837 。 要如何將它再轉回成DateTime呢?有想到以下的方式,view sourceprint?01DECLARE @DateTimeVaue VARCHAR(30) 02SET @DateTimeVaue = '20130402140837' -- 2013/04/02 14:08:37 0304--使用字串函數先將字串轉成日期格式字串再轉成DateTime (20130402140837
阅读全文
摘要:有朋友問「如何直接unpivot成2個欄位」,如下所示,先準備測試資料如下,view sourceprint?01create table T ( 02no varchar(10), 03yearx varchar(4), 04z_type varchar(1), 05A01 smallint, 06B01 smallint, 07A02 smallint, 08B02 smallint, 09A03 smallint, 10B03 smallint11) 12go 1314insert into T VALUES('Z01','2012','1'
阅读全文
摘要:排名函数是SQL Server2005新加的功能。在SQL Server2005中有如下四个排名函数:1.row_number2.rank3.dense_rank4.ntile 下面分别介绍一下这四个排名函数的功能及用法。在介绍之前假设有一个t_table表,表结构与表中的数据如图1所示:图1其中field1字段的类型是int,field2字段的类型是varchar一、row_number row_number函数的用途是非常广泛,这个函数的功能是为查询出来的每一行记录生成一个序号。row_number函数的用法如下面的SQL语句所示:selectrow_number()over(order.
阅读全文
摘要:今晚继续进行Sql效能问题的分享,今天主要是一些具体的sql优化方法和思路分享,若看过后你也有其他想法,欢迎一起探讨,好了,进入今天的主题。针对性地对一些耗资源严重的具体应用进行优化出现效能问题时,首先要做的是什么?这个问题我问过不少同事,有人说凭经验对出问题的sql进行优化,如我们一般说的要合理使用索引,尽量不要使用前面带*号的Like语句,不要再比较操作符前边进行计算或使用函数等等,这些道路都是对的,但经验有时候不一定能解决问题。问题出现时,首先要做的是确定问题点是什么,只有正确的找到问题后才能有针对性的解决问题。下面简单介绍我们一般从哪些角度入手,来确定问题所在。1.首先从业务上理解该处
阅读全文
摘要:简介 加密是指通过使用密钥或密码对数据进行模糊处理的过程。在SQL Server中,加密并不能替代其他的安全设置,比如防止未被授权的人访问数据库或是数据库实例所在的Windows系统,甚至是数据库所在的机房,而是作为当数据库被破解或是备份被窃取后的最后一道防线。通过加密,使得未被授权的人在没有密钥或密码的情况下所窃取的数据变得毫无意义。这种做法不仅仅是为了你的数据安全,有时甚至是法律所要求的(像国内某知名IT网站泄漏密码这种事在中国可以道歉后不负任何责任了事,在米国妥妥的要破产清算)。SQL Server中的加密简介 在SQL Server2000和以前的版本,是不支持加密的。所有的加密操作都
阅读全文
摘要:INNER JOIN / left Join 联接多个表关于SQL的执行计划/查看SQL语句的具体执行过程,工作原理SQL使用视图的优缺点2010-06-04 10:56:43|分类: SQL |标签: |字号大中小订阅在做数据库开发中使用视图的优点有: 1.可以访问表中列的子集。在表中有些列是比较敏感的数据不想用户看到的,如用户密码,员工工资等,用视图可以隐藏这些列。 2.可以访问表中行的子集。有时不想让用户看到与TA无关的数据时,可以在where条件中过滤,如企业中子公司的员工只能看到TA所在子公司的同事资料,而不想其它子公司员工资料也显示出来,用过滤后查询出来的数据集组成视图。 3.可以
阅读全文
摘要:http://www.cnblogs.com/CareySon/archive/2011/12/07/2279522.html简介 视图可以看作定义在SQL Server上的虚拟表.视图正如其名字的含义一样,是另一种查看数据的入口.常规视图本身并不存储实际的数据,而仅仅存储一个Select语句和所涉及表的metadata. 视图简单的理解如下: 通过视图,客户端不再需要知道底层table的表结构及其之间的关系。视图提供了一个统一访问数据的接口。为什么要使用视图(View) 从而我们不难发现,使用视图将会得到如下好处: 视图隐藏了底层的表结构,简化了数据访问操作 因为隐藏了底层的表结构,所以..
阅读全文
摘要:从A表随机取2条记录,用SELECT TOP 10 * FROM ywle order by newid()order by 一般是根据某一字段排序,newid()的返回值 是uniqueidentifier ,order by newid()随机选取记录是如何进行的newid()在扫描每条记录的时候都生成一个值, 而生成的值是随机的, 没有大小写顺序. 所以最终结果再按这个排序, 排序的结果当然就是无序的了或者select top 10 *,newid() as Random from ywle where ywlename='001' ordey by Random 下者效
阅读全文
摘要:在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点:1. 存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 2. 经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。可以极大的提高数据 库的使用效率,减少程序的执行时间,这一点在较大数据量的数据库的操作中是非常重要的。在
阅读全文
摘要:从A表随机取2条记录,用SELECT TOP 10 * FROM ywle order by newid()order by 一般是根据某一字段排序,newid()的返回值 是uniqueidentifier ,order by newid()随机选取记录是如何进行的newid()在扫描每条记录的时候都生成一个值, 而生成的值是随机的, 没有大小写顺序. 所以最终结果再按这个排序, 排序的结果当然就是无序的了或者select top 10 *,newid() as Random from ywle where ywlename='001' ordey by Random 下者效
阅读全文
摘要:select top 1 * from AdminEmployee order by newid()我之前做过一个利用sqlserver的,字段 姓名 中奖状态 几等奖什么的。算法就是利用sqlserver里面的newid随机查询,就是一个sql语句了。譬如三等奖,三人中,order by newid 取top 3 然后更改中奖状态踢出去,最后总会出来。大公司几千人而已,不用考虑newid效率的事情。比较实用。其他数据库的话也不过是个随机查出几条数据的问题。希望能够给你一些启发。
阅读全文
摘要:在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题。下面介绍SQL Server支持的两种批量数据插入方法:Bulk和表值参数(Table-Valued Parameters)。运行下面的脚本,建立测试数据库和表值参数。[c-sharp] view plaincopyprint?--CreateDataBasecreatedatabaseBulkTestDB;gouseBulkTestDB;go--CreateTableCreatetableBulkTestTable(Idintprima
阅读全文
摘要:a recent post, I demonstrated how the sys.procedures catalog view could be used to determine the date and time that a stored procedure was last modified in SQL Server 2005. A similar technique can be used to determine the last time a user table was altered. The following query illustrates this techn
阅读全文
摘要:如果你正在负责一个基于SQL Server的项目,或者你刚刚接触SQL Server,你都有可能要面临一些数据库性能的问题,这篇文章会为你提供一些有用的指导(其中大多数也可以用于其它的DBMS)。 在这里,我不打算介绍使用SQL Server的窍门,也不能提供一个包治百病的方案,我所做的是总结一些经验----关于如何形成一个好的设计。这些经验来自我过去几年中经受的教训,一直来,我看到许多同样的设计错误被一次又一次的重复。 一、了解你用的工具 不要轻视这一点,这是我在这篇文章中讲述的最关键的一条。也许你也看到有很多的SQL Server程序员没有掌握全部的T-SQL命令和SQL Server提供
阅读全文
摘要:整理SQL索引碎片提速2007年07月15日 星期日 下午 03:20检查索引碎片DBCC SHOWCONTIG(表)逻辑扫描碎片和扩展盘区扫描碎片都非常大,需要对索引碎片进行处理一般有两种方法解决,一是利用DBCC INDEXDEFRAG整理索引碎片,二是利用DBCC DBREINDEX重建索引。二者各有优缺点。调用微软的原话如下:DBCC INDEXDEFRAG 命令是联机操作,所以索引只有在该命令正在运行时才可用。而且可以在不丢失已完成工作的情况下中断该操作。这种方法的缺点是在重新组织数据方面没有聚集索引的除去/重新创建操作有效。重新创建聚集索引将对数据进行重新组织,其结果是使数据页填满
阅读全文
摘要:SQL Server 2005:索引碎片整理脚本。 首先说明:该 SQL 索引碎片整理脚本,是从 SQL Server 2005 联机帮助上摘录下来,并且稍加整理而成的。 该 SQL 索引碎片整理脚本,首先从 SQL Server 2005 系统管理视图 sys.dm_db_index_physical_stats 中,找出索引碎片程度大于 10% 的索引,然后根据索引碎片程度,分别来采取不同的方法来整理索引碎片。小于 30% 的使用 alter index reorganize;大于等于 30% 的使用 alter index rebuild。其中 reorganize 相当于 dbcc i
阅读全文
摘要:查询数据库中所有表的索引密度和碎片信息,以便为索引的重建和整理提供依据,也可以参考DBCC SHOWCONTIG,通常FRAGMENTATIOIN在30%以上建议重建,否则建议整理SELECT i.name AS indexname, o.name AS tablename, s.name AS schemaname, f.index_type_desc AS indextype, f.avg_page_space_used_in_percent AS indexdensity, f.avg_fragmentation_in_percent AS indexfragmentation, f.p
阅读全文
摘要:1. 在生产环境中不要出现Select * 这一点我想大家已经是比较熟知了,这样的错误相信会犯的人不会太多。但我这里还是要说一下。 不使用Select *的原因主要不是坊间所流传的将*解析成具体的列需要产生消耗,这点消耗在我看来完全可以忽略不计。更主要的原因来自以下两点:扩展方面的问题造成额外的书签查找或是由查找变为扫描 扩展方面的问题是当表中添加一个列时,Select *会把这一列也囊括进去,从而造成上面的第二种问题。 而额外的IO这点显而易见,当查找不需要的列时自然会产生不必要的IO,下面我们通过一个非常简单的例子来比较这两种差别,如图1所示。图1.*带来的不必要的IO 2. ...
阅读全文