怎样在联合主键上建立索引

senkiner 2008-12-09 12:19:36
我们建立了如下的一张表,当数据达到100W以上时,插入速度会变得非常的慢,请问大家有什么好的建议吗?谢谢!
CREATE TABLE [dbo].[TBL_TEST](
[Field1] [varchar](8) NOT NULL,
[Field2] [bigint] NOT NULL,
[Field3] [varchar](max) NULL,
[Field4] [int] NULL,
[Field5] [varchar](50) NULL,
[Field6] [datetime] NOT NULL CONSTRAINT [DF_TBL_TEST_CreateDate] DEFAULT (getdate()),
[Field7] [varchar](50) NULL,
[Field8] [datetime] NULL,
CONSTRAINT [PK_TBL_TEST] PRIMARY KEY CLUSTERED
(
[Field2] ASC,
[Field1] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
...全文
596 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
小群子 2008-12-09
  • 打赏
  • 举报
回复
顶一个,百万行 不是很多吧? 找找其他原因
senkiner 2008-12-09
  • 打赏
  • 举报
回复
这张表里总共会有180W条左右的数据,插入,查询,删除这三个操作很多,不知道重建聚集索引有多大的用处呢?
senkiner 2008-12-09
  • 打赏
  • 举报
回复
是的,联合主键上会自动建立聚焦索引。
主键里有一个字段是varchar(8)类型的,我们怀疑是在这个字段上聚集索引会有效率问题。
建立非聚集索引会不会好一些呢?会影响到查询,更新这些操作吗?
谢谢了,呵呵
子陌红尘 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hdhai9451 的回复:]
主键,联合主键本身就有索引了,不必在上面再建立索引,要建索引就在其他字段上建索引
插入数据慢可以是数据量太大了

你这么大的数据最好重建索引
[/Quote]

同意,建议楼主用 DBCC INDEXDEFRAG 或 DBCC REINDEX 整理碎片或重建主键上的聚集索引。

szx2000 2008-12-09
  • 打赏
  • 举报
回复
超大数据量尽量不要用联合主键。

建议重新设计表,最好能用bigint identity(1,1)作为主键
dawugui 2008-12-09
  • 打赏
  • 举报
回复
联合主键本身就是索引了.没有必要再对他建立索引.

如果数据量仅仅是百万,不应该出现你说的很慢很慢.请检查其他原因.
Andy__Huang 2008-12-09
  • 打赏
  • 举报
回复
主键,联合主键本身就有索引了,不必在上面再建立索引,要建索引就在其他字段上建索引
插入数据慢可以是数据量太大了

你这么大的数据最好重建索引
水族杰纶 2008-12-09
  • 打赏
  • 举报
回复
分區表~~

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧