php - Pour comparer les années, est-il plus rapide d'utiliser substr pour intercepter les 4 premiers chiffres, ou est-il plus rapide d'utiliser date('Y')?
滿天的星座
滿天的星座 2017-05-16 13:09:05
0
6
829

1 Description du problème : interroger des données en fonction des dates de début et de fin. En raison de la grande quantité de données de la base de données, l'utilisation entre et est très lente, nous avons donc ajouté les champs année, mois et jour. Il existe deux méthodes, substr et. date, en comparant l'année, le mois et le jour, j'ai essayé les deux et le temps de chargement a changé à chaque fois, et je n'ai trouvé aucun article technique pertinent. En théorie, les deux vitesses sont-elles similaires ou existe-t-il une méthode relativement plus rapide ? Merci à tous ceux qui ont répondu.
2. Extraits de code pertinents :

//substr if(substr($startTime,0,4) == substr($endTime,0,4)){ $str .= " L.year = ".substr($startTime,0,4); if(substr($startTime,4,2) == substr($endTime,4,2)){ $str .= " et L.month = ".substr($startTime,4,2); if(date('Ynd',strtotime($startTime)) == date('Ynd',strtotime($endTime))){ $str .= " et day = ".date('d',strtotime($startTime)); }autre{ $str .= " et log_date entre '$startTime' et '$endTime' "; } }autre{ $str .= " et log_date entre '$startTime' et '$endTime' "; } }autre{ $str .= "L.log_date entre $startTime et $endTime" ; } //date if(date('Y',strtotime($startTime)) == date('Y',strtotime($endTime))){ $str = " où année = ".date('Y',strtotime($startTime)); if(date('Yn',strtotime($startTime)) == date('Yn',strtotime($endTime))){ $str .= " et mois = ".date('n',strtotime($startTime)); if(date('Ynd',strtotime($startTime)) == date('Ynd',strtotime($endTime))){ $str .= " et day = ".date('d',strtotime($startTime)); }autre{ $str .= " et log_date entre '$startTime' et '$endTime' "; } }autre{ $str .= " et log_date entre '$startTime' et '$endTime' "; } }autre{ $str = " où log_date entre '$startTime' et '$endTime' "; }
滿天的星座
滿天的星座

répondre à tous(6)
给我你的怀抱

Que vous utilisiez substr pour intercepter les 4 premiers chiffres ou la date('Y'), vous exécutez simplement PHP. Ignorez le décalage horaire en PHP. Le SQL final sera le même et n'affectera pas l'efficacité de la requête de base de données.

Vous devez publier l'instruction SQL qui doit être exécutée afin que tout le monde puisse voir si elle peut être optimisée

巴扎黑

La structure de l'index et de la table a-t-elle été optimisée ? Sinon, l'optimiser d'abord améliorera considérablement la vitesse. Sinon, envisagez de diviser la table ou quelque chose du genre.

我想大声告诉你

Je pense que vous devriez essayer d'écrire directement la recherche de l'année pour voir s'il y a une amélioration des performances. Dans ce cas, transmettez simplement la valeur souhaitée directement à la réception

阿神

Pas très familier avec PHP, mais si la base de données contient une grande quantité de données, vous devez vérifier l'instruction de requête pour créer un index à des fins d'optimisation.

漂亮男人

Publiez l'instruction SQL et ajoutez un index !

过去多啦不再A梦

Il n'y a aucun changement dans l'efficacité d'exécution de ces deux méthodes. PHP assemble simplement les instructions SQL. Vous devriez trouver un moyen d'optimiser à partir de la base de données ou des instructions SQL ;

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal