SQL server大数据量的情况下表的拆分

flySea_csdn 2014-08-22 10:20:36
1. 如题,假设有一张表A,存放了“北京”、“上海”、“苏州”、“南京”等city的信息,表中的数据量可能达到上万条,那么是否有必要将表A根据city拆分,每一个city建立一张表?
2. 我经常用到的操作有2个:第一,根据城市名查询记录“select [字段名] from A where city = ''城市名”;第二,根据城市名插入记录。如果A的记录条数会影响查询效率和插入效率,那么当记录条数达到多少量级的时候会使得效率较低?
...全文
689 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2014-08-25
  • 打赏
  • 举报
回复
引用 9 楼 alimake 的回复:
这是技术内幕08 T-SQL查询里面的 我理解有错吗
好吧,我8楼的话有误。 在同时存在聚集索引的情况下,非聚集索引中存放的不是RID而是聚集索引的键值。 但是索引缓存在内存中,即使是两次定位也比通过全表扫描要快啊。 怎么会认为建索引反而慢了?
xiaodongni 2014-08-25
  • 打赏
  • 举报
回复
引用 13 楼 Tiger_Zhao 的回复:
[quote=引用 12 楼 alimake 的回复:]加我QQ 775163923 有问题请教你 谢谢
你才用,你们全家都用 ——没别的意思,哪家公司能让你上班用的?说出来听听。[/quote] 太多了。我们有SQL 交流群 每天聊的火热 火热的 你不能上QQ啊 悲剧啊 还想多请教请教你了
中国风 2014-08-25
  • 打赏
  • 举报
回复
引用 楼主 flySea_CSDN 的回复:
1. 如题,假设有一张表A,存放了“北京”、“上海”、“苏州”、“南京”等city的信息,表中的数据量可能达到上万条,那么是否有必要将表A根据city拆分,每一个city建立一张表? 2. 我经常用到的操作有2个:第一,根据城市名查询记录“select [字段名] from A where city = ''城市名”;第二,根据城市名插入记录。如果A的记录条数会影响查询效率和插入效率,那么当记录条数达到多少量级的时候会使得效率较低?
上万数据?不是千万或过亿数据,在条件列建上索引就行了。
Tiger_Zhao 2014-08-25
  • 打赏
  • 举报
回复
引用 12 楼 alimake 的回复:
加我QQ 775163923 有问题请教你 谢谢
你才用,你们全家都用 ——没别的意思,哪家公司能让你上班用的?说出来听听。
xiaodongni 2014-08-25
  • 打赏
  • 举报
回复
引用 11 楼 Tiger_Zhao 的回复:
[quote=引用 9 楼 alimake 的回复:] 这是技术内幕08 T-SQL查询里面的 我理解有错吗
好吧,我8楼的话有误。 在同时存在聚集索引的情况下,非聚集索引中存放的不是RID而是聚集索引的键值。 但是索引缓存在内存中,即使是两次定位也比通过全表扫描要快啊。 怎么会认为建索引反而慢了?[/quote] 加我QQ 775163923 有问题请教你 谢谢
Tiger_Zhao 2014-08-22
  • 打赏
  • 举报
回复
引用 5 楼 alimake 的回复:
在CITY上建立索引?你再开玩笑嘛?建立索引,如果查询北京有1000条记录,扫描索引之后,还是在聚集索引上查找,重复1000次能快吗?个人感觉只有1万条记录是在没必要分表!
所有的索引中都有直接定位物理位置的”地址“。 否则没有聚集索引的表怎么访问?
唐诗三百首 2014-08-22
  • 打赏
  • 举报
回复
引用 5 楼 alimake 的回复:
在CITY上建立索引?你再开玩笑嘛?建立索引,如果查询北京有1000条记录,扫描索引之后,还是在聚集索引上查找,重复1000次能快吗?个人感觉只有1万条记录是在没必要分表!
不需要重复查找聚集索引1000次的.
發糞塗牆 2014-08-22
  • 打赏
  • 举报
回复
注意语气,你可以说在city和select的字段名上(如果不多)建复合索引
引用 5 楼 alimake 的回复:
[quote=引用 3 楼 ap0405140 的回复:] 1. 如题,假设有一张表A,存放了“北京”、“上海”、“苏州”、“南京”等city的信息,表中的数据量可能达到上万条,那么是否有必要将表A根据city拆分,每一个city建立一张表? --> 没必要. 2. 我经常用到的操作有2个:第一,根据城市名查询记录“select [字段名] from A where city = ''城市名”;第二,根据城市名插入记录。如果A的记录条数会影响查询效率和插入效率,那么当记录条数达到多少量级的时候会使得效率较低? --> 查询:在city字段上建索引即可. 插入:数据量不大,插入效率问题应可忽略.
在CITY上建立索引?你再开玩笑嘛?建立索引,如果查询北京有1000条记录,扫描索引之后,还是在聚集索引上查找,重复1000次能快吗?个人感觉只有1万条记录是在没必要分表![/quote]
xiaodongni 2014-08-22
  • 打赏
  • 举报
回复
引用 3 楼 ap0405140 的回复:
1. 如题,假设有一张表A,存放了“北京”、“上海”、“苏州”、“南京”等city的信息,表中的数据量可能达到上万条,那么是否有必要将表A根据city拆分,每一个city建立一张表? --> 没必要. 2. 我经常用到的操作有2个:第一,根据城市名查询记录“select [字段名] from A where city = ''城市名”;第二,根据城市名插入记录。如果A的记录条数会影响查询效率和插入效率,那么当记录条数达到多少量级的时候会使得效率较低? --> 查询:在city字段上建索引即可. 插入:数据量不大,插入效率问题应可忽略.
在CITY上建立索引?你再开玩笑嘛?建立索引,如果查询北京有1000条记录,扫描索引之后,还是在聚集索引上查找,重复1000次能快吗?个人感觉只有1万条记录是在没必要分表!
Q315054403 2014-08-22
  • 打赏
  • 举报
回复
若不是亿级别和管理上如归档的需求,别去折腾分区 不建议分表,无谓的增加程序判断处理 除非数据量、负荷真的超过单台性能极限,否则别分表(潜在地分机器)
唐诗三百首 2014-08-22
  • 打赏
  • 举报
回复
1. 如题,假设有一张表A,存放了“北京”、“上海”、“苏州”、“南京”等city的信息,表中的数据量可能达到上万条,那么是否有必要将表A根据city拆分,每一个city建立一张表? --> 没必要. 2. 我经常用到的操作有2个:第一,根据城市名查询记录“select [字段名] from A where city = ''城市名”;第二,根据城市名插入记录。如果A的记录条数会影响查询效率和插入效率,那么当记录条数达到多少量级的时候会使得效率较低? --> 查询:在city字段上建索引即可. 插入:数据量不大,插入效率问题应可忽略.
發糞塗牆 2014-08-22
  • 打赏
  • 举报
回复
选择需要分区的表: 需要注意的是,没有任何规定和指标表明多大的表需要做分区,或者说,不能说非常大的表能通过分区带来效益。比如本人管理的一个系统中,有一个静态表,类似于字典表,有4000多万数据,导出成txt文件有10G。但是上面的索引策略足够支持应用系统的高效查询,这个表目前为止不需要做分区,分区了也不见得会带来什么好处,所以不是“大表”就要做分区。 规范一点的说法:不需要经常访问、不需要过多索引维护、静态的或者能通过使用多个文件组并存放在不同地方从而获取备份、联机还原或者部分还原的表,都不需要进行分区。 当一个表的维护开销明显超过预期,或者因为体积原因影响使用时,可以作为表分区的考虑对象。其中一些参考值为: • 表上的索引维护操作时间和资源开销过大,但是可以通过分区,使其仅发生在部分分区而不是整个表上。 • 表上的数据周期性“过时”需要清理,而删除操作非常慢,或者阻塞了其他用户查询表。 • 数据需要周期性加载到表中,并且加载过程非常慢,但是表数据适合基于升序的日期或时间作为分区列。 简单来说,要考虑是否能从分区中获益,不要仅仅因为体积而进行分区。
--小F-- 2014-08-22
  • 打赏
  • 举报
回复
1.拆分了以后在CITY字段上加索引 查询效率很高的。 2.这个就要具体情况具体分析了 你可以通过查看执行计划去看看这些情况。
xiaodongni 2014-08-22
  • 打赏
  • 举报
回复
引用 6 楼 DBA_Huangzj 的回复:
注意语气,你可以说在city和select的字段名上(如果不多)建复合索引[quote=引用 5 楼 alimake 的回复:] [quote=引用 3 楼 ap0405140 的回复:] 1. 如题,假设有一张表A,存放了“北京”、“上海”、“苏州”、“南京”等city的信息,表中的数据量可能达到上万条,那么是否有必要将表A根据city拆分,每一个city建立一张表? --> 没必要. 2. 我经常用到的操作有2个:第一,根据城市名查询记录“select [字段名] from A where city = ''城市名”;第二,根据城市名插入记录。如果A的记录条数会影响查询效率和插入效率,那么当记录条数达到多少量级的时候会使得效率较低? --> 查询:在city字段上建索引即可. 插入:数据量不大,插入效率问题应可忽略.
在CITY上建立索引?你再开玩笑嘛?建立索引,如果查询北京有1000条记录,扫描索引之后,还是在聚集索引上查找,重复1000次能快吗?个人感觉只有1万条记录是在没必要分表![/quote][/quote] 道歉下 真没其他意思!
xiaodongni 2014-08-22
  • 打赏
  • 举报
回复

这是技术内幕08 T-SQL查询里面的 我理解有错吗

22,210

社区成员

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

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