If you have different millisecond value for each row, then you are preventing pre-aggregation. At this point, you need to ask if the application really needs to slice/dice at millis level? If not, then you can either use a different time unit (say days), or you can snap the millis for the entire day to the beginning of the day or some fixed value.