为了在SQL Server 2012中获取表索引信息,我为一个场景确定了一个奇怪的情况。通常,我会得到有关索引的正确信息,但在一种情况下,我会列举一种奇怪的行为。这是关于将聚集索引放到场景中的问题。但是,如果索引 Field_1 是聚集的,而Field_3是非唯一的,非聚集的,则没有关于Field_1索引的信息(例如。szIdxName和szIdxColName是"“,它们的长度是-1,意思是SQL_NULL_DATA)。所以,我没有索引信息
我想插入到使用聚集列存储索引的表中。我的逻辑如下。首先,我要检查表是否有聚集的列存储索引,然后删除索引,插入新的数据,最后再创建聚集的列存储索引。if exists (select i.name as indexname, fromINDEX cci ON dbo.cci_table' end
else
我发现SQL Server 2012和SQL Server 2014对相同的查询和执行计划使用了不同的非聚集索引。我尝试使用fullscan更新所有相关表和所有索引,甚至启动了旧计划,但是SQL Server 2014使用的索引与SQL Server 2012不同。
有没有人也遇到过这个问题?2012和2014上的优化器是如何决定索引选择性的?
在我的ADW实例上,由自动索引创建的索引在默认情况下是压缩的,但手动创建的索引不是。==========
Table created.SQL> create index a_ind on a (a);
Index created.SQL> select INDEX_NAME,COMPRESSION from dba_ind
如果我以兼容级别90 (SQL2005)运行sql server 2008,它是使用资源数据库中的非索引字表还是使用ftdata\ENU.txt文件?另外,如果我在2008年创建了自己的非索引字列表(使用兼容性100),我是否可以忽略系统非索引字列表,将自己的非索引字列表用于全文查询,或者它将使用系统和我的自定义非索引字列表??我有很多全文索引的问题。web上任何好的sql资源都使用非索引字表,多个表中包含多个。大型