sql-server - 什么是 SQL Server 中的 "large"表?

标签 sql-server

我有一张表,里面有 1000 万条记录。那算不算很多记录?我应该担心搜索时间吗?如果不是,它会不断增长,那么什么才算是大表呢?表大小对搜索时间的影响有多大,我可以做些什么来改善这些问题,最好是在它们成为问题之前?

最佳答案

“大”就像“聪明”——它是相对的。 1000 万行是一个不错的大小,但表是否大取决于许多因素:

  • 有多少列,它们的数据类型是什么?
  • 有多少索引?
  • 表的实际大小是多少(例如,页数 * 8kb,您可以从 sys.dm_db_partition_stats 获得)?
  • 针对它运行什么类型的查询?
  • 单个索引是否保存在内存中,或者大多数查询是否受益于聚集索引扫描(本质上,整个表需要在内存中)?
  • 机器上有多少内存?
  • 你认为什么大?

  • 搜索时间不一定由大小本身决定,而是由您的索引策略的有效性和您为搜索运行的查询类型决定的。如果你有这样的事情:
    WHERE description LIKE '%foo%'
    

    那么普通的索引对你没有任何帮助,你应该开始担心了。对于此类情况,您可能会考虑使用全文搜索。

    具有单个 INT 列(例如 Numbers 表)的表中的 1000 万行算不了什么。 1000 万行带有长描述、XML、地理数据、图像等的产品是另一回事。

    SQL Server 的最大容量规范没有记录表中行数的上限是有原因的。

    关于sql-server - 什么是 SQL Server 中的 "large"表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12498217/

    相关文章:

    sql - 如何加快SQL Server 2008中的更新查询速度?

    sql-server - MS Access 2019 - SQL Server 2017 - 记录集无法更新

    c# - 调用 transaction.complete() 后回滚事务

    sql-server - RedGate SQL 源代码管理适合我吗?

    c# - SSIS 2012 : is it possible to pass references to Package Objects to an external assembly?

    sql - 这个 SQL Server 存储过程有什么问题?

    c# - 再次在数据库中查找自由格式文本

    java - Anylogic microsoft sql错误索引1超出范围

    sql-server - 以编程方式确定链接服务器是 Oracle 还是 SQL Server

    mysql - MS SQL从表中读取带撇号的值并将其保存在另一个表中