C?i thi?n hi?u su?t c?a các văn b?n đ?y đ? truy v?n trong SQL Server

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 2549443 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

Tóm t?t

Bài vi?t này mô t? m?t phương pháp đ? c?i thi?n hi?u su?t truy v?n Microsoft SQL Server s? d?ng tra c?u văn b?n đ?y đ? predicates (ch?ng h?n như ch?a CONTAINSTABLE) và đó c?ng l?c d? li?u. Ví d?, phương pháp này c?i thi?n hi?u su?t c?a truy v?n sau đây:
select * from dbo.ftTest where CONTAINS(TextData, '"keyword"') and CDate > @date
Phương pháp này cho phép b?n thi?t k? các truy v?n, lư?c đ? b?ng, và văn b?n đ?y đ? ch? trong m?t cách mà các mô tơ tìm kiếm văn b?n đ?y đ? b? l?c ra k?t qu? trư?c khi chúng đư?c g?i đ?n cơ quan h?. V? v?y, các đ?ng cơ quan h? không ph?i l?c m?t t?p d? li?u l?n.

Thông tin thêm

Khi b?n t?o m?t truy vấn tìm kiếm văn b?n đ?y đ?, các y?u t? nguyên t?c ?nh hư?ng đ?n hi?u su?t c?a các truy v?n là s? lư?ng d? li?u công c? văn b?n đ?y đ? tra c?u ph?i x? l? trư?c khi ph?n c?n l?i d? li?u đư?c g?i đ?n cơ quan h?. Trong SQL Server, b?n có th? c?i thi?n hi?u su?t c?a các truy v?n b?ng cách l?c ra hàng đ?u đ? gi?m s? lư?ng hàng mà ph?i đư?c x? l? sau này.

Trong phiên b?n c?a SQL Server đ? đư?c phát hành trư?c khi SQL Server 2008, công c? văn b?n đ?y đ? tra c?u tr? v? t?t c? các hàng phù h?p v?i c?m t? tra c?u, và sau đó đ?ng cơ quan h? áp d?ng b?t k? b? l?c. C?i ti?n cho hành vi này đư?c th?c hi?n trong SQL Server 2008, SQL Server 2008 R2 và SQL Server 2012. Tuy nhiên, nó là khó khăn đ? s? d?ng các c?i ti?n này b?i v? toàn b? n?i dung tra c?u ch? s? đư?c t? ch?c r?t khác nhau t? b? máy cơ s? d? li?u ch? s?. Ngoài ra, các đ?ng cơ tra c?u văn b?n đ?y đ? và đ?ng cơ quan h? làm vi?c r?t khác nhau. V? v?y, phương pháp mà bài vi?t này mô t? s? d?ng Table-Valued ch?c năng (TVF) đ? l?c ra hàng đ?u và đ? gi?m b?t s? lư?ng hàng mà ph?i đư?c x? l? sau này.

Ví d?, k? ho?ch truy v?n sau đây tr? v? 131051 hàng phù h?p v?i m?t chu?i tra c?u ch?a. Ngoài ra, m?t nhà đi?u hành tham gia trong k? ho?ch th?c hi?n b? l?c b? sung b?ng cách s? d?ng m?t m?c ch? d?n tra c?u.
Rows StmtText 
-------------------- -----------------------------------------------------------------------------------------------------------
1167 select CDate, ID from dbo.fttest where contains (c2, '"create"') and CDate> '08/05/2019' 

1167 |--Merge Join(Left Semi Join, MERGE:([FTSdb].[dbo].[fttest].[ID])=(FulltextMatch.[docid]), RESIDUA
5858 |--Sort(ORDER BY:([FTSdb].[dbo].[fttest].[ID] ASC)) 
5858 | |--Clustered Index Seek(OBJECT:([FTSdb].[dbo].[fttest].[clidx1]), SEEK:([FTSdb].[
131051 |--Table-valued function 
Tuy nhiên, n?u các truy v?n bao g?m các văn b?n đ?y đ? ch? s? duy nh?t quan tr?ng c?t là m?t predicate, các mô tơ tìm kiếm văn b?n đ?y đ? có th? dùng predicate đ? l?c các k?t qu? đ? văn b?n đ?y đ?. Trong t?nh hu?ng này, TVF tr? l?i m?t s? lư?ng nh? hơn nhi?u d? li?u trư?c khi b? l?c b? sung ph?i đư?c áp d?ng. Ví d?, truy v?n sau đây xác đ?nh giá tr? năm ph?i phù h?p v?i đi?u ki?n c2, và TVF tr? l?i ch? nh?ng k?t qu? phù h?p v?i các giá tr? năm:
Rows StmtText 

-------- ---------------------------------------------------------------------------------------------------------------------------------
5 select CDate, ID from dbo.fttest where contains (c2, '"create"') and CDate > '08/05/2019' and ID in ( 654051, 644051, 649106, 465, 105)

5 |--Nested Loops(Left Semi Join, OUTER REFERENCES:([FTSdb].[dbo].[fttest].[ID])) 
5 |--Index Seek(OBJECT:([FTSdb].[dbo].[fttest].[idx1]), SEEK:([FTSdb].[dbo].[fttest].[ID]=(105) OR ...
5 |--Table-valued function
Đ?ng cơ tra c?u văn b?n đ?y đ? kh? năng đ? đ?y xu?ng các giá tr? đư?c s? d?ng b?i duy nh?t ch? s? chính là n?n t?ng c?a phương pháp sau.

N?u m?t predicate có ch?a m?t c?t ki?u DateTime d? li?u, b?n có th? bao g?m thông tin ngày trong c?t quan tr?ng duy nh?t m?c ch? d?n đ? ch? các hàng phù h?p v?i này predicate đư?c phát ra t?. Đ? làm đi?u này, b?n ph?i h?p l? k?t h?p thông tin ngày trong c?t quan tr?ng. Tuy nhiên, b?n c?ng có th? có đ? thay đ?i ki?u d? li?u c?t quan tr?ng và các ?ng d?ng s? d?ng các truy v?n.

Đ? th?c hi?n các phương pháp, thay đ?i ki?u d? li?u đ?y đ?-đo?n đ?c đáo key ID đ? BIGINT. 4 Byte đ?u tiên ch?p ID chính năm, tháng và ngày giá tr? t? c?t ngày, và 4 byte cu?i v?n như c?. Ví d?, các byte đ?u tiên c?a key ID có th? đ? c?p đ?n năm, các byte ti?p theo có th? đ? c?p đ?n tháng, và hai byte cu?i có th? đ? c?p đ?n ngày. Các ?ng d?ng ph?i phù h?p v?i s? thay đ?i ki?u d? li?u này.

Sau đó, D?ch predicate ph?m vi đ? m?t predicate trên phím c?a b?n. Ví d?: "x<>< y"="" range="" predicate="" can="" be="" translated="" to="" the="" "(x*2^32="">< id="">< y*2^32)"="" predicate.="" because="" the="" translated="" predicate="" is="" a="" predicate="" on="" the="" full-text="" key,="" the="" predicate="" will="" be="" pushed="" down="" into="" the="" full-text="" streaming="" table-valued="" functions="" (stvf).="" this="" behavior="" effectively="" performs="" searches="" within="" the="" date="">

Thu?c tính

ID c?a bài: 2549443 - L?n xem xét sau cùng: 22 Tháng Ba 2013 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Enterprise Evaluation
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
  • Microsoft SQL Server 2012 Enterprise
T? khóa: 
kbmt KB2549443 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này: 2549443

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com