在SQL Server中进行开发会让你身处险地,并且寻找快速解决方案。我们编辑了前十名关于SQL Server开发的常见问题。
SQL Server 2005中是否有新的索引类别了? 2eH@t ;
&E/i.AC
专家回答: 5qZmv3B
nooE6D5
SQL Server 2005没有为关系表引入新的索引类型。基本上——聚簇和非聚簇索引是以B-trees的方式实现的——还仍然在应用。然而,SQL Server 2005确实包含了一些索引上的加强,不论是完全文本索引,还是对于XML数据,此外这些加强还可以改善一些与关系型索引有关的问题。 ~ SjGs E
"$yQ3|\|
SQL Server 2005的完全文本索引特性是全新的,并且是重新编写的。要获得这个特性的信息,请阅读Nimish Khanolkar的MSDN广播文档,介绍SQL Server 2005中的全文本查找。 f0!Ae}&:+
NcZn02=s
XML是SQL Server 2005中另外一个在方式上发生了巨大转变的内容。现在对于开发人员来说有第一流的XML数据类型可用了。这个类型支持XQuery查询语言,使用了这个类型的字段可以通过特殊格式的XML索引被索引到。要了解更多有关XML类型的信息,请查找MSDN 上的文章。 { MX!5r?
L5-a^
还有各种各样的有关T-SQL索引命令的加强。也许最令人感兴趣的就是新的“在线”索引类型,它允许数据库管理员在不需要把用户锁到表外面的情况下执行索引维护任务。这个很有可能标记着数据库管理员需要等到夜里3点才能打开维护窗口修正问题的状况的终结!要了解更多有关这个特性的信息,请查找SQL Server Worldwide Users Group 上的文章。 ;PgE>-Sz
= b_P)b
为行选择创建一个脚本 TwD3_E{W
*aW7=;
问题提交于2005年12月15日 jXKCvCWow
A 8V]==
想象一下这个表: s LN:l
prod_key item_key pack_key last_sale QJqhc$'t
LM001 1029 AD100 2004/12/05 \<Wo%3K=j
LM870 1029 AD100 2005/09/20 2J?$HI!W~
PE789 1030 BC400 2003/07/12 ,>4l
PE312 1030 BC400 2004/08/07 s-jI:I
n|d>L2U
我想要选出哪些在item_key 和pack_key相等的情况下,日期比较大的那一行。换句话说,我想要: ]VP`j\37
LM870 1029 AD100 2005/09/20 dlvk0`^
PE312 1030 BC400 2004/08/07 FP YKsp
sLO Ab
你能帮我写出这个脚本吗? "L3~4?Qv
T??;AN%
专家回答: vQXR{*^11
FD|KQl
这个表有主键吗?那样的话查询可能会容易些。不管怎么样,我觉得你应该按照下面这样: \q1@:*n(
SELECT prod_key,item_key,pack_key,last_sale KgfyT2'
FROM (SELECT item_key,pack_key,MAX(last_sale) AS last_sale FROM tablex GROUP BY item_key,pack_key) AS MaxDateTable #:0{_5n<
WHERE tablex.item_key = MaxDateTable.item_key X61- "n"
AND tablex.pack_key = MaxDateTable.pack_key 8>[Y6m{$
AND tablex.last_sale = MaxDateTable.last_sale ,_KyJI{
cmJ1 iX9t
列出没有记录的数据库表 $d xDzJI
T]_a9'hak
问题提交于2006年5月16日 hu4I51}O+e
KVf3E^7
我创建了一个动态的SQL Server查询来输出表中行的数量。我的目标是列出在数据库中没有记录的表。查询如下所示: NJ]]XE-{
declare @strsql varchar(100) -N)e=2V
declare @tablename varchar(50) m*+p@4l
@tablename=’table123′@strsql=’select count(*) from ‘ + @tablename exec(@strsql) +T(NKG<%
.j9!^%}
我得到了输出,但是我无法把这个值存储到变量中以备查看。 ,yZ7N_ ID/
:dcQ/{
我想要这样查看: *@d):tK
/* @countvariable=0 W*]([g ~
print(@tablename)*/ } .qo[Q
4IG 1l
还有其它的解决方法吗? R6OqP4)Sqp
P*`gp
专家回答: E}G;X8]~
>M!=7\
你可以让你的解决方案更加灵活一些,通过从sysobjects表中抓取表名: GAHib;]
declare @strsql varchar(256) DmM/t)4
create table #emptytables (tablename varchar(128), table_rowcount int)select @strsql=’select distinct o.name as TableName, x.rowcnt as Table_RowCount n+29tQ
from sysobjects o 4 slT \
inner join sysindexes x 9VxqK>
on o.id = x.id l@U 6N~
where x.rowcnt = 0 and nj.[f>
o.type = ‘’U”’insert #emptytables (TableName, Table_rowcount) exec (@strsql) qmen*J5
select * from #emptytables ;1e
drop table #emptytables