2010-11-29 4 views
2

Hibernate 도구를 사용하여 Hibernate ORM을 사용하는 Java 응용 프로그램을 만들었습니다. 엔티티로 사용되는 Java 객체에서 DB 스키마를 설치하거나 업그레이드하는 자동화 된 스크립트를 얻습니다.MySQL : unique and index equivalence

프로그램은 MySQL에서 제대로 작동하지만 Oracle에서는 한 열에 제약 조건 "unique"이 선언되고 인덱스가 정의 된 후에 오류가 발생합니다. 오라클은 "고유 한"제약 조건은 기본적으로 인덱스를 생성하므로 동일한 열에있는 두 개의 인덱스를 선언 할 수 없다고 말합니다.

그래서 MySQL에서 고유 제약 조건과 하나의 인덱스간에 동등성 또는 관계가 있는지 질문합니다.

명확히하십시오. 고맙습니다.

답변

0

고유 제한 조건에는 적용 할 수 있도록 색인이 필요합니다. 두 DBMS 모두 열을 고유 한 것으로 선언 할 때 적절한 인덱스를 만듭니다. 유일한 차이점은 Oracle이 중복 인덱스를 만들지 못하도록하지만, MySQL은 그렇지 않다는 것입니다 :

show index from test_table; 

+------------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ 
| Table  | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | 
+------------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ 
| test_table |   0 | PRIMARY |   1 | id   | A   |   0 |  NULL | NULL |  | BTREE  |   | 
| test_table |   0 | foo_unique |   1 | foo   | A   |   0 |  NULL | NULL |  | BTREE  |   | 
| test_table |   1 | foo_key |   1 | foo   | A   |   0 |  NULL | NULL |  | BTREE  |   | 
+------------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ 
+0

많은 사람들 덕분에 – RGB

+0

@RGB를 보내 주셔서 감사합니다. 좋아하는 답변을 수락 된 것으로 태그하여 주시기 바랍니다 ;-) –

0

MySQL은 쓸모없는 색인을 신경 쓰지 않습니다. 업데이트의 경우 모든 고유 인덱스를 검사하고 SELECT의 경우 임의의 인덱스를 선택합니다.

Oracle을 행복하게 만들려면 고유 색인을 만들기 전에 색인을 삭제하십시오.