Question

Voici la déclaration préparée de MySQL

SELECT 
    ag.`attendance_type`,
    ag.`description`,
    COUNT(a.`attendance`) attendance_count 
FROM
    `ems_attendance` a 
    RIGHT JOIN `ems_att_group` ag 
        ON ag.`id` = a.`attendance` 
        AND a.`added_date` BETWEEN '2011-06-01' 
        AND '2011-06-17' 
        AND a.`users_id` = '9' 
GROUP BY a.`attendance` 
ORDER BY ag.`id`;

et procédure de magasin équivalent

DELIMITER $$

DROP PROCEDURE IF EXISTS `users_attendance_report` $$

CREATE PROCEDURE `users_attendance_report` (
    IN users_id INT,
    IN start_date DATE,
    IN end_date DATE
) 
BEGIN
    SELECT 
        ag.`attendance_type`,
        ag.`description`,
        COUNT(a.`attendance`) attendance_count 
    FROM
        `ems_attendance` a 
        RIGHT JOIN `ems_att_group` ag 
            ON ag.`id` = a.`attendance` 
            AND a.`added_date` BETWEEN start_date 
            AND end_date 
            AND a.`users_id` = users_id 
    GROUP BY a.`attendance` 
    ORDER BY ag.`id` ;
END $$

DELIMITER;

Après avoir exécuté la requête, les deux résultats des mêmes résultats.

Array
(
    [0] => stdClass Object
        (
            [attendance_type] => present
            [description] => Present
            [attendance_count] => 10
        )

    [1] => stdClass Object
        (
            [attendance_type] => absent
            [description] => Absent
            [attendance_count] => 2
        )

    [2] => stdClass Object
        (
            [attendance_type] => other
            [description] => Other
            [attendance_count] => 0
        )

    [3] => stdClass Object
        (
            [attendance_type] => dayoff
            [description] => Day Off
            [attendance_count] => 2
        )

)

Je regarde de près le temps d'exécution, les deux sont les mêmes. Quand et où est meilleur et plus rapide qu'un autre?

Était-ce utile?

La solution

"Plus vite" et "mieux" ne sont pas nécessairement alignés. S'il te plait regarde Cette similitude récente Alors questionnez, et considérez ces attributs d'une solution:

  • maintenable (lisible, exigences de compétences - qui peut travailler sur ce code)
  • testable
  • relemable
  • flexible
  • portable

D'une manière générale, les procédures stockées sont plus rapides, mais échouent sur toutes les autres métriques.

Autres conseils

Je pense que dans votre cas, peu importe si vous exécutez la requête autonome ou dans le cadre de la procédure stockée. Une procédure est agréable dans des situations où vous avez un lot de requête à effectuer. Par conséquent, pour votre requête, il est préférable de fonctionner autonome.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top