Optimize Query: Group By while tracking Count Is there a better way to write this query? The query is taking too long (aprox 4sec)  The box table has about 8k records per day.

I've tried different Indexes but none seem to improve it so I'm thinking it's my query.   

SELECT
boxType.id, sum(box.numBoxes) as totalBoxes,
count(DISTINCT box.employeeId) as totalEmployees
FROM box
INNER JOIN user as u ON u.id = box.userId
INNER JOIN jobBox as jobBox ON box.jobBoxId = jobBox.id
INNER JOIN boxType as bType ON bType.id = jobBox.boxTypeId
WHERE (u.clientId=?) AND (box.createdOn &gt;= ?)
GROUP BY boxType.id

-- box
CREATE TABLE `box` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userId` int(11) NOT NULL,
`employeeId` int(11) DEFAULT NULL,
`numBoxes` float NOT NULL,
`createdOn` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`jobBoxId` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `User id_idx` (`userId`),
KEY `JobBoxFK_idx` (`jobBoxId`),
KEY `FK_5pomtj2u3uh6xq3qf7vmokc5k` (`employeeId`),
KEY `IDX_CreatedOn` (`createdOn`,`jobBoxId`),
CONSTRAINT `UserFK_1` FOREIGN KEY (`userId`) REFERENCES `user` (`id`)   ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `packFK_1` FOREIGN KEY (`jobBoxId`) REFERENCES `jobBox`   (`id`) ON DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT `EmployeeFK_1` FOREIGN KEY (`employeeId`) REFERENCES   `employee` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='.';

-- jobBox
CREATE TABLE `jobBox` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`jobId` int(11) DEFAULT NULL,
`boxTypeId` int(11) DEFAULT NULL,
`createdOn` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `JobBoxFK_idx` (`jobId`),
KEY `BoxTypeID_idx1` (`boxTypeId`),
CONSTRAINT `jobBox_ibfk_1` FOREIGN KEY (`boxTypeId`) REFERENCES    `boxType` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT `jobBox_ibfk_2` FOREIGN KEY (`jobId`) REFERENCES `job`  (`id`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=1937 DEFAULT CHARSET=utf8;

-- boxType
CREATE TABLE `boxType` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8;

-- user
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`clientId` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`),
KEY `clients id_idx` (`clientId`),
CONSTRAINT `clients id` FOREIGN KEY (`clientId`) REFERENCES `client`   (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
) ENGINE=InnoDB AUTO_INCREMENT=67 DEFAULT CHARSET=utf8 COMMENT='  ';


Explain statement results

id, select_type, table, partitions, type, possible_keys, key, key_len, ref, rows, filtered, Extra
'1', 'SIMPLE', 'box', NULL, 'range', 'EmployeeFK_1,packFK_1,IDX_CreatedOn', 'IDX_CreatedOn', '5', NULL, '33034', '100.00', 'Using index condition; Using temporary; Using filesort'
'1', 'SIMPLE', 'u', NULL, 'eq_ref', 'PRIMARY,id_UNIQUE,clients id_idx', 'PRIMARY', '4', 'box.userId', '1', '14.04', 'Using where'
'1', 'SIMPLE', 'jobBox', NULL, 'eq_ref', 'PRIMARY,jobBox_ibfk_1', 'PRIMARY', '4', 'box.jobBoxId', '1', '100.00', 'Using where'
'1', 'SIMPLE', 'boxType', NULL, 'eq_ref', 'PRIMARY,UnitTypesFK_idx', 'PRIMARY', '4', 'jobBox.boxTypeId', '1', '100.00', NULL


Any thoughts are appreciated, thank you.
Add to box:  INDEX(userId, createdOn).

Then provide EXPLAIN SELECT ... if that is not sufficient.