MySQL 데이터베이스를 사용하고있다. 나는 75K 데이터 행으로 구성된 테이블을 가지고있다. 간단한 쿼리를 사용하여 데이터를 가져옵니다.mysql에서 10K 레코드를 실행하는 데 너무 많은 시간이 걸린다. (매번 실패)
select * from mytable
잘 작동하고 몇 초 안에 75k 행을 보여줍니다. 나는 limit 10000
을 사용한 이들 데이터 중 일부를 가져오고 싶었습니다. 그것은 매번 붙어있어. 나는 10k 레코드 MySQL 쿼리를 최적화해야합니다. 나는 다음과 같은 쿼리를 사용하고 있습니다 :
select * from mytable limit 10000
빨리 내 쿼리를 실행하는 방법을 몇 가지 솔루션을 줘.
내 데이터베이스 구조가 같다 : 나는 몇 초에서 더 큰 데이터를 가져올 수있는이 솔루션을
CREATE TABLE IF NOT EXISTS `mytable` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`col1` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`col2` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`col3` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`col4` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`col5` int(11) NOT NULL,
`col6` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`col7` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`col8` int(11) NOT NULL,
`col9` int(11) NOT NULL,
`col11` int(11) NOT NULL,
`col12` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`col13` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`col15` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`col16` enum('0','1') COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
`col17` int(11) NOT NULL,
`col18` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`col19` enum('0','1') COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`,`col2`,`col3`,`col4`,`col5`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=75530 ;
75K (제한 없음) 그 자체입니다 약. 테이블이 손상되지 않았 니? 오래 걸릴 때까지 얼마나 걸리나요? 테이블의 create 문은 무엇입니까? – ToBe
이 쿼리는 횡설수설합니다. 'order by'절이 없으면 LIMIT 절은 반복 가능한 결과를 생성합니다. – symcbean
'SELECT * FROM mytable ORDER BY id LIMIT 10000'은'id' 명령으로 처음 10k 레코드의 모든 데이터를 필요로 할 때 가능한 빠릅니다. 당신은'SQL'으로 그것을 향상시킬 수 없습니다. – Quassnoi