Sql server SQL Server检测慢速与快速列
我有一个ASP.NETMVC应用程序&我使用PetaPoco和SQLServer 我的用例是,我希望允许搜索包含许多字段的表,但隐藏“慢”(即未索引)的字段。我将修改PetaPoco T4模板,以在列上装饰此信息 我发现它提供了一个表与索引的列表。我关心的是它显示了一个特定表的许多列。答案中给出的查询对于我的用例是否可靠?(即)显示的列是否可以包含在where子句中&不会太慢?我有一些表格有4000万行。我不想在where条件中包含慢列Sql server SQL Server检测慢速与快速列,sql-server,Sql Server,我有一个ASP.NETMVC应用程序&我使用PetaPoco和SQLServer 我的用例是,我希望允许搜索包含许多字段的表,但隐藏“慢”(即未索引)的字段。我将修改PetaPoco T4模板,以在列上装饰此信息 我发现它提供了一个表与索引的列表。我关心的是它显示了一个特定表的许多列。答案中给出的查询对于我的用例是否可靠?(即)显示的列是否可以包含在where子句中&不会太慢?我有一些表格有4000万行。我不想在where条件中包含慢列 还是有更好的方法来解决这个问题?在你的问题中没有慢栏。您必
还是有更好的方法来解决这个问题?在你的问题中没有慢栏。您必须区分列的两种用途
建议:为用于搜索的列创建索引,不要返回不必要的列。让您的查询在所选列和返回行方面尽可能具体。我认为这不会那么简单。您可以使用建议的方法(或类似方法)检查索引列,但索引中存在列并不意味着您的查询一定会有效地利用它。例如,如果在A、B和C列上创建了索引(按该顺序),而在B或C列上(但在A列上没有)只有一个“WHERE”子句,则可能会以索引扫描而不是索引查找结束,并且查询速度可能会比预期的慢 因此,您的检查应该考虑索引中列的顺序-即时快速列(在您的情况下)可能会被视为索引的第一列(在您提到的帖子中,ic.index_column_id=1)。索引中不是第一列的列(即ic.index_column_id>1)将很快,只要第一列也包含在过滤器中。您可能还需要考虑其他一些事情(例如基数),但这对于确保驱动索引查找而不是扫描非常重要