深爱那片海 发表于 2015-1-16 22:36:06

MYSQL网站制作之怎样辨认实在和主动创立的索引?

即使对于MySQL的商业化的企业版来说,也没有高昂的许可证成本,当你将其与像甲骨文和微软之类的大型专有商业数据库比较的话。创立|索引问:我发明sysindexes索引表中的良多条目并非我本人创立的。传闻它们并非真实的索引,而是SQLServer查询优化器主动创立的统计。如何才干辨认哪些是真实的索引,哪些是SQLServer主动创立的统计呢?
答:依照默许设置,假如表中的某列没有索引,则SQLServer会主动为该列创立统计。然后,查询优化器评价该列中数据散布局限的统计信息,以选择一个更加无效的查询处置计划。分辩主动创立的统计很复杂,在SQLServer7.0和SQLServer2000中,主动创立的统计的前缀为_WA_Sys。
您还可使用INDEXPROPERTY()函数的IsAutoStatistics属性来辨别一个索引是真实的仍是主动创立的统计,让SQLServer优化器选择必要创立的统计。您还能够为您办理的数据库启用“主动创立统计表”选项。
良多人疏忽了上面的分明的结论。主动创立统计的存在乎味着某个真实的索引大概会从中受害。请思索以下代码的输入:
USEtempdb
GO
IFOBJECTPROPERTY(OBJECT_ID(dbo.orders),IsUserTable)=1
DROPTABLEdbo.orders
GO
SELECT*INTOtempdb..ordersFROMnorthwind..orders
GO
SELECT*FROMtempdb..ordersWHEREorderid=10248
GO
SELECT*FROMtempdb..sysindexesWHEREid=object_id(orders)
ANDnameLIKE
_wa_sys%
GO

该代码在tempdb中复制NorthwindOrders表,选择一行,然后反省SQLServer是不是增加了一个统计。很明显,该表没有OrderId列的索引,以是SQLServer主动创立了名为_WA_Sys_OrderID_58D1301D的统计。OrderId列统计表的存在标明NorthwindOrders表将得益于附加的索引。
以下查询显现了为数据库中每一个用户表主动创立的统计的数目,该数据库最少有一个主动创立的统计。
SELECT
object_name(id)TableName
,count(*)NumberOfAutoStats
FROM
sysindexes
WHERE
OBJECTPROPERTY(id,NIsUserTable)=1
ANDINDEXPROPERTY(id,name,IsAutoStatistics)=1
GROUPBY
object_name(id)
ORDERBY
count(*)DESC

并非一切的统计都可被真实的索引所替换。在某些情形下,SQLServer会为一个表主动创立凌驾50个统计。很分明,这些表的索引战略很低劣。对表及主动创立的与之相干联的统计的疾速记数能够匡助您断定哪些表必要索引。
―MicrosoftSQLServer开辟团队
要想在MySQL与其他数据库之间进行一个面面俱到的功能设置对比,并不是一件容易的MySQL学习教程。随着新软件版本的发布或一些补丁的推出。

因胸联盟 发表于 2015-1-19 08:35:23

理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识

若天明 发表于 2015-1-24 11:27:27

多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。

金色的骷髅 发表于 2015-2-1 09:14:36

对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。

再现理想 发表于 2015-2-7 02:03:15

SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。

admin 发表于 2015-2-19 17:21:08

你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。

莫相离 发表于 2015-3-6 15:19:36

理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识

冷月葬花魂 发表于 2015-3-13 03:09:27

如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。

飘灵儿 发表于 2015-3-20 11:09:32

比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。
页: [1]
查看完整版本: MYSQL网站制作之怎样辨认实在和主动创立的索引?