반응형
느린 업데이트 쿼리
다음 쿼리를 사용하여 토렌트 테이블(토렌트 사이트에서 오픈 소스 항목만 공유할 수 있음)을 업데이트하려고 할 때
UPDATE `torrents` SET `leech` = '0', `seed` = '1' WHERE `id` = '26784'
20,000개의 레코드만 포함된 테이블을 업데이트하는 데 약 0.5초가 걸립니다.다른 쿼리는 0.0478s 미만으로 실행됩니다(SELECT 쿼리).
CREATE TABLE IF NOT EXISTS `torrents` (
`id` int(11) NOT NULL,
`hash_info` varchar(255) NOT NULL,
`category_slug` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL,
`size` bigint(20) NOT NULL,
`age` int(11) NOT NULL,
`description` text NOT NULL,
`trackers` longtext NOT NULL,
`magnet` longtext,
`files` longtext,
`parent_category` int(11) NOT NULL,
`category` int(11) NOT NULL,
`publish_date` int(11) DEFAULT NULL,
`uploader` int(11) NOT NULL,
`seed` int(11) DEFAULT '0',
`leech` int(11) DEFAULT '0',
`file_key` varchar(255) DEFAULT NULL,
`comments_count` int(11) DEFAULT '0'
) ENGINE=InnoDB AUTO_INCREMENT=26816 DEFAULT CHARSET=latin1;
해결책이 있습니까?
색인화된 열을 기준으로 하는 조회는 색인화되지 않은 열을 기준으로 하는 조회보다 훨씬 빠릅니다.이러한 동작은 데이터 양이 증가함에 따라 더욱 가시적으로 나타날 수 있습니다.
ID 열에 인덱스를 만들고 쿼리 성능 향상에 도움이 되는지 확인합니다.
id
정수로 선언됩니다.따라서 먼저 비교 대상은 문자열이 아닌 정수여야 합니다.
UPDATE `torrents`
SET `leech` = '0', `seed` = '1'
WHERE `id` = 26784;
둘째, ID에 인덱스가 필요합니다.다음을 통해 하나를 만들 수 있습니다.
create index idx_torrents_id on torrents(id);
또는 테이블의 기본 키로 지정합니다.
언급URL : https://stackoverflow.com/questions/45170426/slow-update-query
반응형
'programing' 카테고리의 다른 글
오류 발생: AttributeConverter를 적용하는 동안 오류가 발생했습니다. 중첩 예외는 javax.persistence입니다.지속성 예외 (0) | 2023.09.09 |
---|---|
닥터 스케쥴링 데이터베이스 설계 (0) | 2023.09.09 |
Excel : 값의 클러스터에 대한 조건부 포맷 (0) | 2023.09.09 |
UIColor에서 RGB 추출 (0) | 2023.09.09 |
우분투 18에 파이썬 3.7용 핍을 설치하는 방법? (0) | 2023.09.09 |