2013-01-18 26 views
5

Tôi có cần phải thêm một chỉ mục anoatation cho khóa chính của bảng ngủ đông cho hiệu năng tốt không, tôi giả định rằng đánh dấu một trường bằng @id có nghĩa là chỉ số được tạo raBạn có cần tạo chỉ mục trên cột @id của bảng Hibernate

@Id 
private String guid; 

nhưng tôi didnt thấy bất cứ điều gì được tạo ra trong DDL được tạo

nhưng nếu tôi thêm một chú thích @index

@Id 
@org.hibernate.annotations.Index(name = "IDX_GUID") 
private String guid; 

sau đó tôi làm báo một chỉ mục được tạo trong DDL. Vì vậy, tôi nghĩ rằng tôi cần phải làm điều này cho mỗi bảng, nhưng một phần của tôi là suy nghĩ là điều này thực sự cần thiết như chắc chắn ngủ đông sẽ muốn lập chỉ mục tạo ra cho khóa chính như là một điểm khởi đầu ?.

Trả lời

6

Bạn KHÔNG phải tạo chỉ mục một cách rõ ràng. Thay vì nhìn thấy các câu lệnh DDL; Tôi sẽ khuyên bạn nên kiểm tra lược đồ cuối cùng được tạo bởi hibernate. Chỉ mục được tạo như một phần của câu lệnh tạo bảng.

+0

@Deepak, chỉ để xác nhận sự hiểu biết của tôi, bạn có nói rằng tạo chỉ mục không được xử lý như một phần của quá trình xuất DDL (hbm2ddl) không? Nếu vậy, điều đó sẽ làm cho DDL phần lớn vô ích, hoặc tôi đang thiếu một cái gì đó ở đây? Cảm ơn – paulkmoore

+0

@paulkmoore Chúng tôi có thể tạo chỉ mục theo hai cách; viz. "Tạo chỉ mục ..." hoặc trong khi tạo bảng chúng ta có thể chỉ định .. Tất cả những gì tôi đang nói là trong trường hợp chỉ mục này trên khóa chính được tạo trong khi tạo bảng. – Deepak

+0

@Deepak, Ok cảm ơn, tôi đã bỏ lỡ sự khác biệt giữa các chỉ mục chính chính và các chỉ mục khác (chung). Cảm ơn đã giúp đỡ. – paulkmoore

Các vấn đề liên quan