{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

对于sqlserver大数据内容,怎么建表才能提高查询数据的速度?

miracledanmiracledan 回答0 收藏1
收藏问题

2条回答

godiscoder

godiscoder

回答于2022-06-28 14:38

不是很了解这个,建立索引?根据功能需要创建视图?这个真不知道了。我是来看其他大佬的答案随便学习一下

评论0 赞同0
  •  加载中...
王岩威

王岩威

回答于2022-06-28 14:38

十几年来使用的主要数据库就是MS SqlServer,对于提高查询速度的方法也考虑了很多,如果具体到建表这个条件,能采取的措施主要如下:

  1. 选择好数据库主键,主键作为聚集索引,直接决定了数据存储的格式和顺序,它对于提高查询速度,特别是能利用上主键的查询,具有决定性的意义。
  2. 合理建立索引,除了主键,其他非聚集索引就是最重要的因素了,如果某项查询能命中一个索引,查询速度会有几倍甚至几十倍的提升,但是索引也是有代价的,它一是会对存储有影响,会占用额外的空间,二是对于增删改操作都有可能引起索引的变化,从而减少这些操作的执行效率。所以,要根据预期的业务情况,合理建立索引,也可以在系统运行一段时间后,根据实际业务需要,再建立索引。
  3. 冗余字段的设计,对于特定的业务,有时需要多表连接查询,这时候有可能会影响查询效率,为了提高查询速度,也可以酌情加上冗余字段,把多表查询变成单表查询,这在提高速度的同时,也会代理存储和数据一致性的问题,需要通盘考虑。
  4. 字段类型的选择,这个影响较小,具体的业务要求不同,有时候也需要考虑,比如对于主键或其他需要做比较的字段,一个整形的类型,查询效率会高于一个字符串,不过,不能因此影响业务的实现。
  5. 分表,对于特别大的,随时间累计的数据,可以分表来处理,比如每个月份建一个表,表结构完全一样,查询时根据时间段来决定从哪些表查询,这会大幅提高查询效率,但是数据维护逻辑会变的复杂一些。
  6. 数据分区,这种方式和分表有点相像,但是最好和物理磁盘配合,充分利用多磁盘并发读取的优点。
  7. 内存表,sqlserver2014后,提供了内存表的概念,在特定情况下,可以把所有的数据都加载到内存中,极大提高存取速度,不过这种有一定的限制,不能作为通用的优化方法。
  8. 业务逻辑设计,在设计业务逻辑的时候,就充分考虑实体对象之间的关系,合理建立实体表和关系表,这也和具体的业务有关系,需要具体分析。
其实,很多时候,优化还要通盘考虑,特别是在应用端,也有很多优化措施,比如缓存、分页、存储过程利用、大数据统计临时表等,结合数据库的特点,共同来提高查询速度。

评论0 赞同0
  •  加载中...

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<