나는이 같은 두 개의 테이블이 있습니다이 표를 정규화하는 것이 더 빠릅니까?
표 사람 :
VARCHAR 이름
INTEGER 나이
표 메시지
VARCHAR 메시지
VARCHAR 이름
있습니다 삽입물의 수백 다음과 같은 검색어를 사용하여 Message 테이블에서 계속 삭제 :
insert into Message VALUES ('Hello there', 'John');
delete from Message where name = 'John';
사람들에게 ID 필드를 추가하고 사용자를 메시지의 ID로 참조하는 것이 좋습니다. 다음 쿼리가 훨씬 빨라 집니까?
FIRST - select id from User where name = 'John'
THEN - delete from Message where id = $id
처음에는 문자를 검색하는 것보다 ID를 검색하여 삽입 및 삭제가 더 빠르다고 생각했습니다. 그러나 얼마나 빨랐습니까? 속도를 늘리면 성능 조회에서 ID를 찾기 위해 추가 쿼리가 User 테이블에 필요하지 않게됩니까?
클라이언트 코드가 데이터베이스 서버로부터 먼 경우에는 SELECT + DELETE가 상당히 비쌉니다. 클라이언트 코드와 데이터베이스 서버가 함께 배치되면 다소 비용이 많이 듭니다. 하나의 명령문 (아마도 WHERE Name = 'John'이라는 SELECT ID에서 ID = WHERE)을 삭제하면 더 효율적입니다. 최적화 프로그램에 최적화 할 부분을 지정하면 불가사의가 발생합니다. 벙어리 파일 관리자처럼 취급하면 성능이 저하 될 수 있습니다. –