2010-01-26 44 views
7

Tôi hỏi câu hỏi này trong stackoverflow vì đúng nơi của nó để hỏi ...Mẹo và thủ thuật về tối ưu hóa truy vấn [SQL Server 2005]

Tôi biết nó rất lớn chủ đề để bắt đầu nhưng một số những cái nhỏ mà có thể được thực sự tiện dụng ...

Nó có thể là hữu ích cho các nhà phát triển trẻ như tôi biết về tối ưu hóa truy vấn ..

Một số Mẹo và Tricks về truy vấn tối ưu hóa trong SQL server 2005 ..

Trả lời

2

Dựa trên câu hỏi ở đây

  • Tránh datatype ưu tiên (ví dụ như luôn luôn giống như cho như thế nào, bao gồm cả chiều dài của varchar vv)

ví dụ

...WHERE tinyintcol = @intvalue 
means a conversion of the column and invalidates an index 
...WHERE tinyintcol = @tinyintvalue 
  • chức năng Tránh trên các cột trong mệnh đề WHERE

ví dụ

...WHERE DATEADD(day, 1, MyCol) > GETDATE() 
should be 
...WHERE MyCol > DATEADD(day, -1, GETDATE()) 
  • Bao gồm chỉ số

  • GUID: chỉ số không clustered

1

Nơi rõ ràng nhất để bắt đầu nếu bạn có truy vấn chậm là đảm bảo rằng nó sử dụng chỉ mục.

+0

trong quản lý studio, chạy lệnh ** đặt showplan_all trên ** rồi chạy truy vấn của bạn. Họ truy vấn sẽ không chạy, nhưng kế hoạch thực hiện sẽ được bán phá giá. Nhìn vào đầu ra này cho từ * scan * đây là nơi một chỉ mục không được sử dụng. –

1
  • Cố gắng giảm tổng số điện thoại của gia nhập nếu có thể
  • C onsider kích thước bảng được sử dụng trong truy vấn
  • Sử dụng chỉ số như họ là bạn của bạn
  • Coi chừng các loại bạn đang sử dụng như phím (int để int là một so sánh dễ dàng hơn nhiều so với hai varchars)
  • Tránh sử dụng ' giống như' truy vấn nếu có thể cố gắng để có được giá trị sử dụng một bình đẳng đầu tiên
1

Đối với các truy vấn tôi có thể thêm vào gbn, recursivesmaclell sau:

  • cố gắng hạn chế tối đa các truy vấn con, tham gia
  • tránh bất kỳ lockings excessing, tiết kiệm các điểm kiểm tra
  • pragmas sử dụng để thiết lập bảng tạm trong bộ nhớ
  • pragmas sử dụng để thiết lập đồng bộ OFF
  • pragmas sử dụng để vô hiệu hóa trigger (nếu có thể)
  • nhúng INSERTDELETE truy vấn trong giao dịch
  • đôi khi UPDATE là chậm hơn cho nhiều bản ghi hơn là chỉ chèn lại chúng. Vì vậy, khuyên là chọn, DELETE, hơn lập trình cập nhật bản ghi và tái INSERT với các phím hiện có (xem ra cho CASCADETRIGGERS)
  • kiểm tra với quản trị viên sys của bạn mà DB bộ nhớ cache nên được ON
Các vấn đề liên quan