首頁 資料庫 mysql教程 filter indexs

filter indexs

Jun 07, 2016 pm 05:43 PM
filter

筛选索引--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.视图与筛选索引
视图是存储查询定义的虚拟表;与筛选索引相比,其用途更广,功能更强。有关视图的详细信息,请参阅了解视图和使用视图的情况。下表比较了在视图和筛选索引中可以使用的部分功能。

在表达式中允许             视图                     筛选的索引
计算列                           是                             否

联接                              是                             否

多个表                           是                             否

谓词中的简单比较逻辑        是                             是

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1669
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1273
29
C# 教程
1256
24
解決「[Vue warn]: Failed to resolve filter」錯誤的方法 解決「[Vue warn]: Failed to resolve filter」錯誤的方法 Aug 19, 2023 pm 03:33 PM

解決「[Vuewarn]:Failedtoresolvefilter」錯誤的方法在使用Vue進行開發的過程中,我們有時會遇到一個錯誤提示:「[Vuewarn]:Failedtoresolvefilter」。這個錯誤提示通常出現在我們在模板中使用了一個未定義的過濾器的情況下。本文將介紹如何解決這個錯誤並給出相應的程式碼範例。當我們在Vue的

怎麼在SpringBoot2中整合Filter 怎麼在SpringBoot2中整合Filter May 16, 2023 pm 02:46 PM

先定義一個統一存取URL攔截的Filter。程式碼如下:publicclassUrlFilterimplementsFilter{privateLoggerlog=LoggerFactory.getLogger(UrlFilter.class);@OverridepublicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,

Springboot中filter的原理與註冊方法是什麼 Springboot中filter的原理與註冊方法是什麼 May 11, 2023 pm 08:28 PM

1.filter先看下web伺服器的filter所處的位置。 filter是一個前後連接的鏈,前面處理完成之後傳遞給下一個filter處理。 1.1filter的介面定義publicinterfaceFilter{//初始化方法,整個生命週期只執行一次。 //在init方法成功(失敗如拋異常等)執行完前,無法提供過濾服務。 //參數FilterConfig用於取得初始化參數publicvoidinit(FilterConfigfilterConfig)throwsServletException;//

CSS 模糊屬性詳解:filter 與 backdrop-filter CSS 模糊屬性詳解:filter 與 backdrop-filter Oct 20, 2023 pm 04:48 PM

CSS模糊屬性詳解:filter和backdrop-filter導語:在設計網頁時,我們常常需要一些特效來增加頁面的視覺吸引力。而模糊效果是其中一種常見的特效之一。 CSS提供了兩種模糊屬性:filter和backdrop-filter,它們分別用於對元素內容以及背景內容進行模糊處理。本文將詳細介紹這兩個屬性,並提供一些具體的程式碼範例。一、filt

CSS 視覺屬性解析:box-shadow,text-shadow 和 filter CSS 視覺屬性解析:box-shadow,text-shadow 和 filter Oct 20, 2023 pm 12:51 PM

CSS視覺屬性解析:box-shadow,text-shadow和filter引言:在網頁設計和開發中,使用CSS可以為元素添加各種視覺效果。本文將重點放在CSS中的box-shadow,text-shadow和filter這三個重要屬性,包括其使用方法和效果展示。下面我們分別詳細解析這三個屬性。一、box-shadow(盒子陰影)box-shado

Filter在java中如何過濾 Filter在java中如何過濾 Apr 18, 2023 pm 11:04 PM

說明1、如果Lambda參數產生true值,則filter(能夠產生boolean結果的Lambda)將產生元素;2、產生false時,就不再使用此元素。實例建立一個List集合:ListstringCollection=newArrayList();stringCollection.add("ddd2");stringCollection.add("aaa2");stringCollection.add("bbb1");stringC

Java 8中的Optional類別:如何使用filter()方法過濾可能為空的值 Java 8中的Optional類別:如何使用filter()方法過濾可能為空的值 Aug 01, 2023 pm 05:27 PM

Java8中的Optional類別:如何使用filter()方法過濾可能為空的值在Java8中,Optional類別是一個非常有用的工具,它允許我們更好地處理可能為空的值,避免了NullPointerException的發生。 Optional類別提供了許多方法來操作潛在的空值,其中一個重要的方法是filter()。 filter()方法的作用是,如果Option

Vue中如何利用filter對資料進行格式化與處理 Vue中如何利用filter對資料進行格式化與處理 Oct 15, 2023 pm 03:50 PM

Vue中利用filter對資料進行格式化和處理在Vue中,我們可以透過使用filter來格式化資料和處理資料。 Filter是一種可以在範本中直接呼叫的函數,它可以處理要顯示的資料並傳回處理後的結果。在本文中,我們將介紹如何使用filter來格式化和處理數據,並提供具體的程式碼範例。註冊filter在Vue實例中,我們需要先註冊一個filter,以便在模

See all articles