filter indexs
筛选索引--filter indexs 筛选索引是一种经过优化的非聚集索引,尤其适用于涵盖从定义完善的数据子集中选择数据的查询。筛选索引使用筛选谓词对表中的部分行进行索引。 一:筛选索引与全表索引相比具有以下 优点 : 1.提高了查询性能和计划质量 设计良好的筛
筛选索引--filter indexs
筛选索引是一种经过优化的非聚集索引,尤其适用于涵盖从定义完善的数据子集中选择数据的查询。筛选索引使用筛选谓词对表中的部分行进行索引。
一:筛选索引与全表索引相比具有以下优点:
1.提高了查询性能和计划质量
设计良好的筛选索引可以提高查询性能和执行计划质量,因为它比全表非聚集索引小并且具有经过筛选的统计信息。与全表统计信息相比,经过筛选的统计信息更加准确,因为它们只涵盖筛选索引中的行。
2.减少了索引维护开销
仅在数据操作语言 (DML)
语句对索引中的数据产生影响时,才对索引进行维护。与全表非聚集索引相比,筛选索引减少了索引维护开销,因为它更小并且仅在对索引中的数据产生影响时才进行维护。筛选索引的数量可以非常多,特别是在其中包含很少受影响的数据时。同样,如果筛选索引只包含频繁受影响的数据,则索引大小较小时可以减少更新统计信息的开销。
3.减少了索引存储开销
在没必要创建全表索引时,创建筛选索引可以减少非聚集索引的磁盘存储开销。可以使用多个筛选索引替换一个全表非聚集索引而不会明显增加存储需要。
4.设计注意事项
为了设计有效的筛选索引,必须了解应用程序使用哪些查询以及这些查询与您的数据子集有何关联。例如,所含值中大部分为 NULL
的列、含异类类别的值的列以及含不同范围的值的列都属于具有定义完善的子集的数据。以下设计注意事项提供了筛选索引优于全表索引的各种情况。
5.数据子集的筛选索引
在列中只有少量相关值需要查询时,可以针对值的子集创建筛选索引。例如,当列中的值大部分为 NULL 并且查询只从非 NULL
值中进行选择时,可以为非 NULL 数据行创建筛选索引。由此得到的索引与对相同键列定义的全表非聚集索引相比,前者更小且维护开销更低。
eg1:例如,AdventureWorks 数据库中有一个包含 2679 行的 Production.BillOfMaterials 表。EndDate 列只有 199 行包含非 NULL 值,其余 2480 行均包含 NULL。下面的筛选索引将涵盖这样的查询:返回在此索引中定义的列的查询,以及只选择 EndDate 值不为 NULL 的行的查询。
USE AdventureWorks;
GO
IF EXISTS (SELECT name FROM
sys.indexes
WHERE name =
N'FIBillOfMaterialsWithEndDate'
AND object_id =
OBJECT_ID (N'Production.BillOfMaterials'))
DROP INDEX
FIBillOfMaterialsWithEndDate
ON
Production.BillOfMaterials
GO
CREATE NONCLUSTERED INDEX
FIBillOfMaterialsWithEndDate
ON
Production.BillOfMaterials (ComponentID, StartDate)
WHERE EndDate IS NOT
NULL;
GO
筛选索引 FIBillOfMaterialsWithEndDate
对下面的查询有效。您可以显示查询执行计划,以确定查询优化器是否使用了此筛选索引。有关如何显示查询执行计划的信息,请参阅分析查询。
SELECT ProductAssemblyID, ComponentID, StartDate
FROM
Production.BillOfMaterials
WHERE EndDate IS NOT
NULL;
GO有关如何创建筛选索引以及如何定义筛选索引谓词表达式的详细信息,请参阅 CREATE INDEX (Transact-SQL)。
6.异类数据的筛选索引
表中含有异类数据行时,可以为一种或多种类别的数据创建筛选索引。
eg2:例如,香港虚拟主机,Production.Product 表中列出的每种产品均分配到一个 ProductSubcategoryID,后者又与 Bikes、Components、Clothing 或 Accessories 产品类别关联。这些类别为异类类别,因为它们在 Production.Product 表中的列值并不是紧密相关的。例如,对于每种产品类别,Color、ReorderPoint、ListPrice、Weight、Class 和 Style. 均具有唯一特征。假设会经常查询具有子类别 27-36 的 Accessories。通过对 Accessories 子类别创建筛选索引,可以提高对 Accessories 的查询的性能。
下面的示例对 Production.Product 表中 Accessories 子类别中的所有产品创建一个筛选索引。
USE AdventureWorks;
GO
IF EXISTS (SELECT name FROM
sys.indexes
WHERE name =
N'FIProductAccessories'
AND object_id = OBJECT_ID
('Production.Product'))
DROP INDEX FIProductAccessories
ON Production.Product;
GO
CREATE NONCLUSTERED INDEX
FIProductAccessories
ON Production.Product (Name,
ListPrice)
WHERE ProductSubcategoryID >= 27 AND ProductSubcategoryID GO
筛选索引 FIProductAccessories 对下面的查询有效,因为查询谓词等效于筛选索引表达式。
SELECT Name, ListPrice
FROM Production.Product
WHERE
ProductSubcategoryID BETWEEN 27 AND
36;
GO
7.视图与筛选索引
视图是存储查询定义的虚拟表;与筛选索引相比,其用途更广,功能更强。有关视图的详细信息,请参阅了解视图和使用视图的情况。下表比较了在视图和筛选索引中可以使用的部分功能。
在表达式中允许 视图 筛选的索引
计算列 是 否
联接 是 否
多个表 是 否
谓词中的简单比较逻辑 是 是

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제










!['[Vue 경고]: 필터를 확인하지 못했습니다' 오류 해결 방법](https://img.php.cn/upload/article/000/887/227/169243040583797.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
"[Vuewarn]:Failedtoresolvefilter" 오류를 해결하는 방법 Vue를 사용하여 개발 프로세스를 진행하는 동안 "[Vuewarn]:Failedtoresolvefilter"라는 오류 메시지가 나타나는 경우가 있습니다. 이 오류 메시지는 일반적으로 템플릿에서 정의되지 않은 필터를 사용할 때 발생합니다. 이 문서에서는 이 오류를 해결하는 방법을 설명하고 해당 코드 예제를 제공합니다. 우리가 Vue에 있을 때

1. 필터 먼저 웹 서버의 필터 위치를 살펴보세요. 필터는 이전 처리가 완료된 후 처리를 위해 다음 필터로 전달되는 체인입니다. 1.1필터 인터페이스 정의 publicinterfaceFilter{//초기화 방법은 전체 수명 주기에서 한 번만 실행됩니다. //init 메소드가 성공적으로 실행될 때까지(예외 발생 등의 실패) 필터링 서비스를 제공할 수 없습니다. //FilterConfig 매개변수는 초기화 매개변수를 얻는 데 사용됩니다. publicvoidinit(FilterConfigfilterConfig)throwsServletException;//

먼저 통합 액세스 URL 차단을 위한 필터를 정의합니다. 코드는 다음과 같습니다: publicclassUrlFilterimplementsFilter{privateLoggerlog=LoggerFactory.getLogger(UrlFilter.class);@OverridepublicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{H

참고 1. Lambda 매개변수가 true 값을 생성하면 필터(부울 결과를 생성할 수 있는 Lambda)가 요소를 생성합니다. 2. false가 생성되면 이 요소는 더 이상 사용되지 않습니다. 목록 컬렉션 생성 예: ListstringCollection=newArrayList();stringCollection.add("ddd2");stringCollection.add("aaa2");stringCollection.add("bbb1");stringC

CSS 퍼지 속성에 대한 자세한 설명: 필터 및 배경 필터 소개: 웹 페이지를 디자인할 때 페이지의 시각적 매력을 높이기 위해 특수 효과가 필요한 경우가 종종 있습니다. 흐림 효과는 일반적인 특수 효과 중 하나입니다. CSS는 요소 콘텐츠와 배경 콘텐츠를 각각 흐리게 하는 데 사용되는 필터와 배경 필터라는 두 가지 흐림 속성을 제공합니다. 이 문서에서는 이러한 두 가지 속성을 자세히 설명하고 몇 가지 구체적인 코드 예제를 제공합니다. 1. 필터

CSS 시각적 속성 분석: 상자 그림자, 텍스트 그림자 및 필터 소개: 웹 디자인 및 개발에서 CSS를 사용하여 요소에 다양한 시각적 효과를 추가할 수 있습니다. 이 기사에서는 사용법 및 효과 표시를 포함하여 CSS의 상자 그림자, 텍스트 그림자 및 필터의 세 가지 중요한 속성에 중점을 둘 것입니다. 아래에서는 이 세 가지 속성을 자세히 분석합니다. 1. box-shadow (박스 그림자) box-shado

Java8의 Optional 클래스: filter() 메서드를 사용하여 null 가능성이 있는 값을 필터링하는 방법 Java8에서 Optional 클래스는 null 가능성이 있는 값을 더 잘 처리하고 NullPointerException 발생을 방지할 수 있는 매우 유용한 도구입니다. Optional 클래스는 잠재적인 null 값을 조작하는 많은 메서드를 제공하며 중요한 메서드 중 하나는 filter()입니다. filter() 메서드의 기능은 다음과 같습니다. Option

Vue에서는 필터를 사용하여 데이터 형식을 지정하고 처리합니다. Vue에서는 필터를 사용하여 데이터 형식을 지정하고 처리할 수 있습니다. 필터는 템플릿에서 직접 호출할 수 있는 함수로 표시할 데이터를 처리하고 처리된 결과를 반환할 수 있습니다. 이 기사에서는 필터를 사용하여 데이터 형식을 지정하고 처리하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 필터 등록 Vue 인스턴스에서는 모델에서 사용할 수 있도록 먼저 필터를 등록해야 합니다.
