sql server 数据库中用久了一个表中的数据多了怎么处理

淡定的牙粉 2017-07-08 03:35:35
小弟初学数据库不久,想请教各位前辈大牛一个问题,就是我用C#编写了一个客户端程序,用来对数据库中的某个表进行增删改查。现在有个疑问:就是刚刚开始数据不多还好,就是时间久了,数据会越来越多,查询速度会越来越慢,这样肯定不行;我本来想新建一个和原表结构一样的新表,然后把旧表更改名字即可,但是感觉这样肯定也不行,因为我会时不时的查询很久很久以前的数据,因为客户端程序连接的数据库和表名已经限定死了,这样就查询不到旧表中的数据。不知道各位前辈大牛是怎么处理,能否告诉小弟我一下,万分感谢!
...全文
310 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2017-07-08
  • 打赏
  • 举报
回复
大数据操作时,首先硬件要支持,比如内存 1、索引可以提高查询效率,表记录不多时<1GB 2、表>1GMB时,分区表和分区索引在存储上分开,可提高查询效率,这需要你的要定义表的分区列的规则 e.g. http://blog.csdn.net/roy_88/article/details/6102218 3、表>1GB时,分表 可分为历史表和业务表, 历史表存放历史数据比如:3月前,不可修改 业务表存储;3个月内数据,可修改 4、表>1GB时,表结构简单可用SQL2014提供的内存表
淡定的牙粉 2017-07-08
  • 打赏
  • 举报
回复
引用 8 楼 sinat_28984567 的回复:
[quote=引用 6 楼 u014754371 的回复:] [quote=引用 3 楼 sinat_28984567 的回复:] 可以试试分区表,按照时间把数据存储到不同的物理文件上,对外是一张表,实际是很多物理文件。
谢谢您的回答!这样做的话和我全部用同一个表比起来,查询速度会明显加快吗?[/quote] 理论上应该会,用分区表可以应用更多的硬件资源cpu、磁盘io等,而且查找的时候可以根据分区列更加准确的定位数据物理文件位置,从而减少搜索数据量[/quote] 好的,谢谢您的回答!
二月十六 版主 2017-07-08
  • 打赏
  • 举报
回复
引用 6 楼 u014754371 的回复:
[quote=引用 3 楼 sinat_28984567 的回复:] 可以试试分区表,按照时间把数据存储到不同的物理文件上,对外是一张表,实际是很多物理文件。
谢谢您的回答!这样做的话和我全部用同一个表比起来,查询速度会明显加快吗?[/quote] 理论上应该会,用分区表可以应用更多的硬件资源cpu、磁盘io等,而且查找的时候可以根据分区列更加准确的定位数据物理文件位置,从而减少搜索数据量
淡定的牙粉 2017-07-08
  • 打赏
  • 举报
回复
引用 5 楼 hjywyj 的回复:
[quote=引用 4 楼 u014754371 的回复:] [quote=引用 2 楼 roy_88 的回复:] 比如:在条件列name上建索引
Create table Tab(ID int identity primary key,name sysname)

create index ix_Tab_name on Tab(name)
、 加索引优化sql语句什么的我都知道点,但是当一个表中数据达到数十亿条记录时,再怎么优化索引肯定还是影响查询的速度的,3楼前辈的答案可能是我想要的。不知道还有没有什么其他不错的主意[/quote] 十亿条用分区表什么的就可以,再多了建数据集群什么的[/quote] 好的,谢谢您的回答!我还有一个疑问:分区表的话和我目前只有一个表比起来,在大量数据下查询速度会明显加快吗?
淡定的牙粉 2017-07-08
  • 打赏
  • 举报
回复
引用 3 楼 sinat_28984567 的回复:
可以试试分区表,按照时间把数据存储到不同的物理文件上,对外是一张表,实际是很多物理文件。
谢谢您的回答!这样做的话和我全部用同一个表比起来,查询速度会明显加快吗?
  • 打赏
  • 举报
回复
引用 4 楼 u014754371 的回复:
[quote=引用 2 楼 roy_88 的回复:] 比如:在条件列name上建索引
Create table Tab(ID int identity primary key,name sysname)

create index ix_Tab_name on Tab(name)
、 加索引优化sql语句什么的我都知道点,但是当一个表中数据达到数十亿条记录时,再怎么优化索引肯定还是影响查询的速度的,3楼前辈的答案可能是我想要的。不知道还有没有什么其他不错的主意[/quote] 十亿条用分区表什么的就可以,再多了建数据集群什么的
淡定的牙粉 2017-07-08
  • 打赏
  • 举报
回复
引用 2 楼 roy_88 的回复:
比如:在条件列name上建索引
Create table Tab(ID int identity primary key,name sysname)

create index ix_Tab_name on Tab(name)
、 加索引优化sql语句什么的我都知道点,但是当一个表中数据达到数十亿条记录时,再怎么优化索引肯定还是影响查询的速度的,3楼前辈的答案可能是我想要的。不知道还有没有什么其他不错的主意
二月十六 版主 2017-07-08
  • 打赏
  • 举报
回复
可以试试分区表,按照时间把数据存储到不同的物理文件上,对外是一张表,实际是很多物理文件。
中国风 2017-07-08
  • 打赏
  • 举报
回复
比如:在条件列name上建索引
Create table Tab(ID int identity primary key,name sysname)

create index ix_Tab_name on Tab(name)
中国风 2017-07-08
  • 打赏
  • 举报
回复
在表的查询 条件上建索引

34,576

社区成员

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

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