Nó có vẻ là khá chấp nhận rằng trong đó có chủ sở hữu schema trong truy vấn tăng hiệu suất db, ví dụ .:SQL Server và hiệu suất tên bảng đầy đủ
SELECT x FROM [dbo].Foo
vs SELECT x FROM Foo
.
Điều này có nghĩa vụ lưu một tra cứu, bởi vì SQL Server sẽ tìm kiếm một bảng Foo thuộc về người dùng trong ngữ cảnh kết nối.
Hôm nay tôi được cho biết rằng luôn luôn bao gồm tên cơ sở dữ liệu cải thiện hiệu suất cùng một cách, ngay cả khi bạn đang truy vấn cơ sở dữ liệu bạn đã chọn trong chuỗi kết nối của bạn:
SELECT x FROM MyDatabase.[dbo].Foo
Có bất kỳ sự thật này? Điều này có ý nghĩa như một tiêu chuẩn mã hóa không? Có bất kỳ điều nào trong số này (kể cả ví dụ đầu tiên) dịch cho các lợi ích có thể đo lường không?
Chúng ta đang nói về một vài chu kỳ để tra cứu thêm từ điển trên máy chủ cơ sở dữ liệu so với SQL cồng kềnh hơn và nối thêm trên máy chủ web (hoặc máy khách khác)?
Nếu nó tạo sự khác biệt, nó sẽ thêm vấn đề bảo trì vì tất cả truy vấn của bạn đều có tên cơ sở dữ liệu trong đó. Làm cho nó rất khó để đổi tên một cơ sở dữ liệu. – adrianbanks
Phụ thuộc vào những gì bạn duy trì. Có tên đủ điều kiện bên trong quy trình cụ thể của tôi đảm bảo nó hoạt động chính xác theo cách giống nhau ngay cả khi được gắn vào một db khác trong môi trường thử nghiệm của tôi - trong trường hợp cụ thể của tôi, tôi muốn env thử nghiệm. để tạo ra kết quả 'sản xuất' theo như proc được lưu trữ.Có lẽ đây không phải là cách thực hành tốt nhất mà tôi nhận thấy, nhưng cảnh quan rộng lớn của các kho dữ liệu của chúng tôi không có các bộ phận đếm được sao chép hoàn toàn trong trạng thái sandbox'd sạch trong một số miền TEST riêng biệt, vì vậy, nhiều môi trường TEST/DEV của chúng tôi tốt nhất là hỗn hợp dữ liệu sản xuất và không có thật. – bkwdesign