Tôi không chắc về cơ sở dữ liệu khác, nhưng đối với SQL Server tôi khuyên bạn nên thực hiện Kế hoạch thực hiện. Nó rất rõ ràng (mặc dù với rất nhiều cuộn dọc và ngang, trừ khi bạn đã có một màn hình 400 "!) Cho thấy những gì các bước truy vấn của bạn là mút thời gian.
Nếu bạn có một bước điên 80%, sau đó có thể một chỉ số có thể được thêm vào, sau đó sau khi tinh chỉnh chỉ mục, hãy chạy lại Kế hoạch thực hiện để tìm bước lớn nhất tiếp theo của bạn để tìm bước tiếp theo lớn nhất tiếp theo của bạn. [IMG] từ những người khác, tức là chúng chiếm 1-2%, nếu đó là trường hợp, sau đó bạn có thể cần phải xem liệu có cách nào bạn có thể cắt giảm lượng dữ liệu được đưa vào truy vấn của bạn hay không, thực hiện bốn triệu đơn đặt hàng đã đóng cần phải được bao gồm trong truy vấn "Đơn đặt hàng đang hoạt động"? Không, vì vậy loại trừ tất cả những người có STATUS = 'C' ... hoặc một cái gì đó tương tự .
Một cải tiến khác bạn sẽ thấy từ Kế hoạch thực hiện là tra cứu dấu trang, về cơ bản nó tìm thấy một kết quả trong chỉ mục, nhưng sau đó SQL Server phải nhanh chóng tìm kiếm thông qua bảng để tìm bản ghi mà bạn muốn. Hoạt động này đôi khi có thể mất nhiều thời gian hơn là chỉ quét bảng ở nơi đầu tiên sẽ có, nếu đúng như vậy, bạn có thực sự cần chỉ mục đó không?
Với chỉ mục và đặc biệt với SQL Server 2005, bạn nên xem xét mệnh đề INCLUDE, về cơ bản cho phép bạn có một cột trong chỉ mục mà không thực sự nằm trong chỉ mục, vì vậy nếu tất cả dữ liệu bạn cần cho truy vấn của mình là trong chỉ mục của bạn hoặc là một cột được bao gồm thì SQL Server thậm chí không cần phải nhìn vào bảng, một sự đón nhận hiệu suất lớn.
Nguồn
2008-09-14 04:07:29
Trông rất giống với [câu hỏi cũ này] (http://stackoverflow.com/questions/39331/what-generic-techniques-can-be-applied-to-optimize-sql-queries#39344). – Unsliced