【问题标题】:Should i index a column or split it into separate views SQL我应该索引一列还是将其拆分为单独的视图 SQL
【发布时间】:2015-08-28 09:16:29
【问题描述】:

我有一个表Employees,其中包含大约 11000 行数据。其中一列是Location,在此列中有不同类型的位置,例如美国、法国、英国。我在位置列上创建了一个聚集索引。我还创建了该表的视图。

我将创建一个使用此视图的 MVC 项目。我想知道的是我应该创建不同的视图,每个视图都按位置分隔,还是聚集索引足以提高性能?还是我应该两者都做?

在我看来,较小的视图会提高性能,因为在项目中它将允许按位置搜索,而不是通过巨大的视图进行搜索,您现在只需搜索较小的视图。

【问题讨论】:

    标签: c# sql-server indexing


    【解决方案1】:

    集群或类似的东西适用于巨大的表,比如数亿行。有 11000 行,sql server 就可以了,通常甚至没有索引。 现在,如果您真的担心性能,请为您通常搜索的列添加索引,例如您的位置。

    另外,最好有另一个存储位置的表,然后只有该表的外键。

    此行数性能不佳的一个原因可能是您有非常大的行,例如大nvarchars,或者您有大的二进制数据(不会存储在行中,因此不会减慢搜索),但正在与其他数据一起获取。例如,如果您从数据库中提取 100 个项目并且每个项目都有一个 4MB 的图像,那么您正在读取 400MB,这需要时间。

    【讨论】:

    • 根据位置将视图拆分为视图会更好吗?或者索引位置列是否足够好?还是我应该两者都做?我的主要目标是获得最好的表现。
    • 每个功能都有自己的性能开销。分区适用于非常大的数据集,因此其性能开销可能非常高。对于几万行范围内的表,好的设计只会产生良好的性能,只有小行(规范化表,将大数据(如图像)带到其他表,...),只获取您的信息需要(例如,如果您仅显示项目列表,则不要获取仅在另一个页面中显示的大型描述)并最终创建索引。满足于足够好的表现,除非你在比赛中。
    猜你喜欢
    • 2018-05-15
    • 1970-01-01
    • 2018-05-04
    • 2021-06-13
    • 1970-01-01
    • 2020-04-30
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多