Danh mục

Cải tiến trong lệnh T-SQL của SQL Server 2008 (P.2)

Số trang: 9      Loại file: pdf      Dung lượng: 376.33 KB      Lượt xem: 9      Lượt tải: 0    
Jamona

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Trong phần trước chúng ta đã tìm hiểu một số cải tiến trong câu lệnh T-SQL của SQL Server 2008, gồm IntelliSense, Grouping Set, bảng gợi ý FORCESEEK, … Trong phần này chúng ta sẽ tiếp tục tìm hiểu những kiểu dữ liệu mới được giới thiêu trong SQL Server 2008.SQL Server 2008 đã giới thiệu một số kiểu dữ liệu mới giúp mở rộng đối tượng làm việc và cải tiến khả năng thực thi của SQL Server. Ví dụ, kiểu User-Defined Table (bảng do người dùng định nghĩa) và Table-Valued Parameter cho phép người dùng đưa một nhóm...
Nội dung trích xuất từ tài liệu:
Cải tiến trong lệnh T-SQL của SQL Server 2008 (P.2) Cải tiến trong lệnh T-SQL của SQL Server 2008 (P.2) Trong phần trước chúng ta đã tìm hiểu một số cải tiến trong câu lệnh T-SQL của SQL Server 2008, gồm IntelliSense, Grouping Set, bảng gợi ý FORCESEEK, … Trong phần này chúng ta sẽ tiếp tục tìm hiểu những kiểu dữ liệu mới được giới thiêu trong SQL Server 2008.SQL Server 2008 đã giới thiệu một số kiểu dữ liệu mới giúp mở rộng đối tượng làm việc và cảitiến khả năng thực thi của SQL Server. Ví dụ, kiểu User-Defined Table (bảng do người dùngđịnh nghĩa) và Table-Valued Parameter cho phép người dùng đưa một nhóm kết quả vào một thủtục và lưu nhiều giá trị trả về lên máy chủ, trong khi kiểu dữ liệu Date và Time có thể giúp tiếtkiệm tài nguyên bộ nhớ vì chiếm dụng ít bộ nhớ hơn trong trường hợp người dùng chỉ cần lưungày hay giờ, và giúp thao tác dễ dàng hơn khi làm việc với chúng. Trong phần này chúng ta sẽtập trung tìm hiểu hai kiểu dữ liệu này, về phạm vi sử dụng và khả năng ứng dụng.User-Defined Table Type (UDTT) và Table-Value Parameter (TVP)Với SQL Server 2008 chúng ta có thể tạo một UDTT (kiểu bảng do người dùng định nghĩa) theođịnh nghĩa cấu trúc bảng. Để đảm bảo rằng mọi dữ liệu trong UDTT đáp ứng được mọi tiêu chí,chúng ta có thể tạo những rằng buộc riêng và những khóa chính trên kiểu bảng này. Ngoài ra,chúng ta có thể sử dụng một UDTT để khai báo nhiều TVP (tham số do bảng định giá trị) chocác công cụ hay thủ tục lưu trữ để gửi nhiều bản ghi dữ liệu tới một thủ tục lưu trữ hay một côngcụ mà không phải tạo một bảng tạm thời hay nhiều tham số.TVP giờ đây linh hoạt hơn rất nhiều, và trong một số trường hợp nó còn có khả năng thực thi tốthơn những bảng tạm thời hay cung cấp nhiều phương pháp khác nhau để không phải sử dụng đếncác tham số. Sử dụng TVP có các lợi ích sau, không sử dụng khóa cho mẫu dữ liệu ban đầu từmáy trạm, không cần phải biên tập lại lệnh, giảm truy cập tới máy chủ, cho phép máy trạm chỉđịnh thứ tự sắp xếp và những khóa chính, …Khi các biến của bảng được được chuyển tác như những tham số thì bảng này sẽ được hiên thựchóa trong cơ sở dữ liệu hệ thống tempdb hơn là chuyển tác toàn bộ nhóm dữ liệu trong bộ nhớ,điều này giúp việc xử lý với lượng dữ liệu lớn hiệu quả hơn. Mọi máy chủ thực hiện chuyển táccác tham số biến thiên của bảng được chuyển tác bởi tham chiếu, sử dụng tham chiếu này nhưmột con trỏ tới bảng đó trong tempdb để tránh tạo bản sao cho dữ liệu đầu vào.Ứng dụngCác lập trình viên luôn gặp phải rắc rối khi chuyển nhiều bản ghi trong cơ sở dữ liệu để tận dụngtối đa khả năng thực thi. Ví dụ, khi một lập trình viên cần lập trình cho trang chấp nhận thứ tựgồm nhiều mục thì họ sẽ phải viết theo logic riêng để nhóm mọi lệnh chèn thàng một chuỗi địnhgiới hay kiêu XML (OPENXML trong SQL Server 2000) rồi chuyển những giá trị văn bản đósang một thủ tục hay lệnh. Thao tác này yêu cầu thủ tục hay lệnh đó phải có logic cần thiết choviệc tháo nhóm những giá trị và làm cho những cấu trúc dữ liệu có hiệu lực, sau đó tiến hànhchèn các bản ghi. Quá nhiều thao tác cần thực hiện nhưng lại không tối ưu, trong trường hợp nàychúng ta có thể sử dụng TVP để chuyển một bảng dữ liệu gồm nhiều bản ghi từ ứng dụng .NETsang SQL Server và chèn trực tiếp vào bảng mà không phải thực hiện thêm bất kì thao tác nào tạimáy chủ này.Hạn chế1. UDTT tồn tại một số hạn chế, ví dụ nó không thể sử dụng như một cột trong bản, định dạngbảng không thể thay đổi sau khi đã được tạo, một giá trị mặc định không thể được chỉ định trongđịnh dạng của UDTP, …2. SQL Server không duy trì thống kê các cột của TVP.3. TVP phải được chuyển như những tham số READONLY nhập vào sang những lệnh T-SQL.Chúng ta không thể thực hiện các tác vụ DML như UPDATE (cập nhật), DELETE (xóa), hayINSERT (chèn) trên một TVP trong phần chính của lệnh. Nếu cần phải thay đổi dữ liệu đượcchuyển tới một thủ tục lưu trữ hay lệnh biểu hiện tham số trong TVP thì chúng ta phải chèn dữliệu đó vào một bảng tạm thời bay một biến của bảng. Ngoài ra, chúng ta không thể sử dụng cácbiến của bảng như các tham số OUTPUT (kết xuất), mà chỉ có thể sử dụng như các tham sốINPUT (nhập vào).Ví dụTrong ví dụ này chúng ta sẽ tìm hiểu phương pháp tạo một kiểu bảng do người dùng định nghĩa,tạo một biến của kiểu bảng này, chèn các bản ghi vào bảng và chuyển nó tới thủ tục lưu trữ nhưmột tham số TVP.Trước tiên chúng ta sẽ tạo một bảng và chèn các bản gi vào đó. Cấu trúc lệnh tạo bảng này nhưsau:--Tạo bảng lưu trữ thông tin khách hàngCREATE TABLE [Customers]([ID] [int] NOT NULL PRIMARYKEY IDENTITY,[FirstName] [varchar](100)NOT NULL,[LastName] [varchar](100)NOT NULL,[Email] [varchar](200) NOTNULL)GO--Chèn bản ghi vào bảng CustomerINSERT INTO [Customers] (FirstName, LastName, Email)VALUES(AAA,XYZ, ...

Tài liệu được xem nhiều:

Gợi ý tài liệu liên quan: