我可以在ms sql中创建哈希索引而不使用alter table吗?
我想将哈希索引添加到我的SQL Server表中。我想写这样的东西我可以在ms sql中创建哈希索引而不使用alter table吗?,sql,sql-server,indexing,Sql,Sql Server,Indexing,我想将哈希索引添加到我的SQL Server表中。我想写这样的东西 CREATE TABLE index_data_compression.with_HASH_INDEX ( col1 int NOT NULL, col2 int, col3 int PRIMARY KEY NONCLUSTERED (col1) ) WITH ( MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA ); CRE
CREATE TABLE index_data_compression.with_HASH_INDEX
(
col1 int NOT NULL,
col2 int,
col3 int
PRIMARY KEY NONCLUSTERED (col1)
)
WITH
(
MEMORY_OPTIMIZED = ON,
DURABILITY = SCHEMA_AND_DATA
);
CREATE NONCLUSTERED INDEX ix_hash_Column2_col3
ON index_data_compression.with_HASH_INDEX HASH ( col2, col3 )
WITH (
PAD_INDEX = OFF,
IGNORE_DUP_KEY = OFF,
STATISTICS_NORECOMPUTE = OFF,
STATISTICS_INCREMENTAL = OFF,
ALLOW_ROW_LOCKS = OFF,
ALLOW_PAGE_LOCKS = OFF,
OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF,
BUCKET_COUNT = 4
);
但是create不能处理散列索引-我不明白为什么
ALTER TABLE [index_data_compression].[with_HASH_INDEX]
ADD INDEX [ix_hash_Column2_col3]
NONCLUSTERED HASH ([col2], [col3]) WITH (BUCKET_COUNT = 4)
我不想使用alter table
我可以通过SQL Server 2017+中的create命令创建哈希索引吗?“我不想使用alter table。”为什么不可以?根据文档,这就是如何在现有表上创建它们:@Larnu我一直认为create index总是有效的,但不幸的是,它不适用于内存优化的表如果你不想使用
ALTER table
,你只能失望地生活<代码>创建索引不能用于创建哈希索引。您会发现,对内存中的表执行许多(如果不是大多数的话)操作都需要altertable
。这是一个有意识的选择,强调为内存中的表创建索引与将它们添加到基于磁盘的表中是完全不同的——实际的表结构和访问它的(编译的)代码需要更改。“不幸的是,它不适用于内存优化表”正确,我链接的文档,给你看。这就是为什么我要问你对altertable
有何异议。请检查此链接,以解决你的问题。