처음 사용 된 용어가 옳지 않다면 죄송합니다. 나는 mySQL 전문가가 아니다.생성 된 열에 색인 추가
CREATE TABLE `accesses` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`time` int(11) DEFAULT NULL,
`accessed_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `index_accesses_on_accessed_at` (`accessed_at`)
) ENGINE=InnoDB AUTO_INCREMENT=9278483 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
이 표는 그것에 10.000.000 행이 :
는이 같은 테이블이 있습니다. 다음과 같은 쿼리를 사용하여 차트를 생성하는 데 사용합니다.
SELECT SUM(time) AS value, DATE(created_at) AS date
FROM `accesses`
GROUP BY date;
이 쿼리는 매우 길며 (1 분 이상). 나는 그것을 최적화 할
(AVG
, MIN
또는 MAX
대신 SUM
, 또는과 특정 일 또는 월에 WHERE
, 또는 GROUP BY HOUR(created_at)
, 등등 ...과) 다른 쿼리를 많이하고 있어요. 내가 가지고있는 가장 좋은 아이디어는 DATE(created_at)
, HOUR(created_at)
, MONTH(created_at)
과 같이 중복성이있는 여러 열을 추가 한 다음 인덱스를 추가하는 것입니다.
...이 해결책이 좋습니까? 아니면 다른 것이 있습니까?
감사
출력의 전체 테이블 선언을 제공하는 것이 현명 할 수 있습니다 : 'SHOW CREATE TABLE accesses' – NDM
당신이 가지고있는 레코드의 양과 함께, 간단한 선택 쿼리에 대해 1 분은 hella long입니다. 나는이 질문을 [DatabaseAdministrators] (http://dba.stackexchange.com/)에게 가져다 줄 것이다. – Alternatex
음, 결과 집합을 제한하지 않고 10mil 레코드에'group'과'sum'을합니다 ... – NDM