내 MySQL의 DB의 단순화 된 버전은 다음과 같습니다인덱스를 사용하지 않고 MySQL 쿼리를 최적화 할 수 있습니까?
Table books (ENGINE=MyISAM)
id <- KEY
publisher <- LONGTEXT
publisher_id <- INT <- This is a new field that is currently null for all records
Table publishers (ENGINE=MyISAM)
id <- KEY
name <- LONGTEXT
현재의 books.publisher 반복 점점 계속 값을 보유하고 있지만, publishers.name는 유일하게 보유하고있다. books.publisher를 없애고 대신 books.publisher_id 필드를 채우고 싶습니다.
UPDATE books
JOIN publishers ON books.publisher = publishers.name
SET books.publisher_id = publishers.id;
문제는 내가 기록의 큰 숫자를 가지고 있고, 작동하더라도, 그것은 영원히 복용한다는 것입니다 다음과 같이
내가 완료 원하는 것을 설명하는 간단한 SQL 코드이다.
는
CREATE INDEX publisher ON books (publisher(20));
조금 혼란 스럽습니다. 나는 너를하려고 생각했다. SET books.publisher_id = publishers.id; 아니? –
"많은 수의 기록을 명확히 할 수 있습니까?" 어떤 액세스 방법 (InnoDB? MyISAM?)을 사용하고 있습니까? "영원히"라는 말은 아직 완성되지 않았다는 것을 의미한다고 생각합니다. 이런 종류의 물건에는 오랜 시간이 걸립니다. 이러한 일회성 데이터 재구성은 완료하는 데 여러 시간이 걸릴 수 있으며 때로는 야간 또는 일부 실행해야 할 때도 있습니다. –
이것은 [tag : php]와 아무런 관련이 없습니다. – geomagas