表的数据量上百万条,程序执行判断很慢

web55 2012-01-11 01:49:17
如题:
数据库A表的数据量上百万条,A表里有Z字段是存放‘随机编码’(不重复的),再添加新记录的时候每次都要遍历整表,判断新添加的记录生成的‘随机编码’和Z字段中的‘随机编码’不重复

现在由于数据量上百万条了,每次添加新记录都会很慢,甚至没反映。

麻烦大家帮忙看下,该怎么做才能让添加新记录很快跟一开始的时候一样???急~~急~~急~~~~
...全文
206 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
fling_boy 2012-01-12
  • 打赏
  • 举报
回复
不知你的表中z字段有没有索引。
1.没有,那每次插入前对比会比较慢
2.有,那对比快,但插入会慢

建议分表,把历史数据都存一个表中,把当前新数据存在新表中,历史表中有索引,新表中不建索引,晚上或不忙的时候把数据同步到历史表中。

这样每次插入前都检索两个表,只插入到新表中,应该可以加快速度。

dongsheng10101 2012-01-12
  • 打赏
  • 举报
回复
一、结构思想要变通。
二、随机码字段加索引。
fanzhouqi 2012-01-12
  • 打赏
  • 举报
回复
随机码 加索引,分页的状况 估计有点恐怖。

不过不改变 应用层设计的情况下 只能想用这个办法了,看能不能达到要求
shuohuameijiang 2012-01-12
  • 打赏
  • 举报
回复
建议LZ不要使用随机编码。可以使用更加灵活的编码规则。比如 XXX-001,最后的数字部分可以通过程序控制自增。将最后一次的编码存在数据表里面,下次要生成新的编码时,直接对比上一次的编码即可。当然,编码这个字段建立唯一索引是必须的。
prcak47 2012-01-12
  • 打赏
  • 举报
回复
随机编码还要规则,那真是脑子秀逗了。
meiseagull 2012-01-11
  • 打赏
  • 举报
回复
感觉设计思路上有问题了,现在无论怎样优化,你的表的记录会越来越多,速度肯定会越来越慢,所以我建议你重新考虑‘随机编码’的设计,要么从现在起开始使用一种编码规划,考虑不与以前重复就行了
郗晓勇 2012-01-11
  • 打赏
  • 举报
回复
create nonclustered index 索引名 on 表名(字段名,字段名)

=========================================================================================

web55 2012-01-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 stublue 的回复:]
在随机编码这列加索引,让查找是否已存在时走索引,就很快了!
[/Quote]

能详细点吗?怎么加索引???

例如:select * from 表 where 随机码 LIKE 新生成的随机码
Leon_He2014 2012-01-11
  • 打赏
  • 举报
回复
在随机编码这列加索引,让查找是否已存在时走索引,就很快了!
web55 2012-01-11
  • 打赏
  • 举报
回复
因为这随机码是有指定的,多少位又不能包含哪几个字符,所以当初就没用newid()

现在数据量上百万条了,就出现了每次添加新记录都会很慢,甚至没反映。

大家能不能再帮帮看有什么方法让它快起来???
勿勿 2012-01-11
  • 打赏
  • 举报
回复
newid()?
百年树人 2012-01-11
  • 打赏
  • 举报
回复
随机编码直接使用 NEWID() ?

如果只是一个随机码,就没必要在程序中生成
叶子 2012-01-11
  • 打赏
  • 举报
回复
随机编码?用newid() 不行吗?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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