Tarrn: Neukunden per SQL Abfrage

Beitrag lesen

Hallo zusammen,

grundsätzlich habe ich 2 Lösungen für den Weg - es geht darum, dass ich die Anzahl der Kunden in einem Monat brauche, deren Email (ja nicht astrein, mir bewusst, aber aufgrund der Datenbank Modellierung nicht anders möglich) vorher nicht in der Tabelle auftaucht.

Mein Problem ist eigentlich, dass mir die Datenbank bei beiden Abfragen immer ins Timeout geht.

Erster Ansatz:

select count(email)
 from 
(select email from x.tOrder where  Created_At > "2017-01-01 00:00:00" and Created_At < "2017-01-31 23:59:59"and email not in (select email from x.tOrder where Created_At < "2016-12-31 00:00:00")
group by email
having count(email) = 1) t 

Zweiter Ansatz

select monthOrders.email from
(
/* orders */
select email from x.tOrder 
where  Created_At > "2017-01-01 00:00:00" and Created_At < "2017-01-31 23:59:59"
) monthOrders
left join
(
/* old orders */
select email from x.tOrder 
where Created_At < "2016-12-31 23:59:59" and AxaptaId != "PAYMENT_PENDING" 
) beforeOrders
on monthOrders.email=beforeOrders.email
where beforeOrders.email is null

Jemand eine stabilere / schnellere Idee für mich?