Hi, All.
Help me to understand why such different speed of two queries. These queries do the 
same and differ only in superfluous information (marked by red). Speed of the first is 
0.37 second. Speed of the latter is 3.95 second.

The first:

SELECT DATE_FORMAT(visits_1.date_time_visit, '%Y-%m-%d') AS dt, Count(DISTINCT 
visits_1.id_visitor) AS cnt,  visits_1.id_visitor, visits_1.id_visit, 
visits_2.id_visitor, visits_2.id_visit, visits_1.visit_number, visits_2.visit_number 
FROM visits AS visits_1 INNER JOIN visits AS visits_2 USING(id_visitor) 
WHERE visits_1.id_visitor=visits_2.id_visitor 
AND visits_1.date_time_visit BETWEEN '2001-05-01' AND '2001-06-30' 
AND visits_2.date_time_visit BETWEEN '2001-05-01' AND '2001-06-30'
AND visits_1.visit_number=1
AND visits_2.visit_number=2
AND UNIX_TIMESTAMP(visits_2.date_time_visit)-UNIX_TIMESTAMP(visits_1.date_time_visit) 
<= 3600
GROUP BY dt
LIMIT 0,50

 

The latter:

SELECT DATE_FORMAT(visits_1.date_time_visit, '%Y-%m-%d') AS dt, Count(DISTINCT 
visits_1.id_visitor) AS cnt,  visits_1.id_visitor, visits_1.id_visit, 
visits_2.id_visitor, visits_2.id_visit, visits_1.visit_number, visits_2.visit_number 
FROM visits AS visits_1 INNER JOIN visits AS visits_2 USING(id_visitor) 
WHERE visits_1.date_time_visit BETWEEN '2001-05-01' AND '2001-06-30' 
AND visits_2.date_time_visit BETWEEN '2001-05-01' AND '2001-06-30'
AND visits_1.visit_number=1
AND visits_2.visit_number=2
AND UNIX_TIMESTAMP(visits_2.date_time_visit)-UNIX_TIMESTAMP(visits_1.date_time_visit) 
<= 3600
GROUP BY dt
LIMIT 0,50

Best Regards.
Nick.

Reply via email to