Comment améliorer le taux de réussite du cache et l'efficacité des requêtes de base de données de PHP et MySQL via les index ?
Citation :
Lors du développement de sites Web et d'applications, PHP et MySQL sont une combinaison couramment utilisée. Cependant, afin d'optimiser les performances et d'améliorer l'expérience utilisateur, nous devons nous concentrer sur l'efficacité des requêtes de base de données et les taux de réussite du cache. Parmi eux, l’indexation est la clé pour améliorer la vitesse des requêtes et l’efficacité du cache. Cet article présentera comment améliorer le taux de réussite du cache et l'efficacité des requêtes de base de données de PHP et MySQL grâce à l'indexation, et donnera des exemples de code spécifiques.
1. Pourquoi utiliser des index :
Un index est une structure de données dans une table de base de données qui est utilisée pour augmenter la vitesse des requêtes. Il crée un index sur une ou plusieurs colonnes afin que la base de données puisse localiser rapidement les données qui répondent aux conditions de requête. L'utilisation d'index peut réduire considérablement le temps d'interrogation de la base de données et améliorer la vitesse de réponse du système.
2. Comment créer un index :
Dans MySQL, vous pouvez spécifier la colonne d'index lors de la création de la table, ou créer un index sur une table existante. Voici quelques façons de créer un index :
Spécifiez l'index lors de la création de la table :
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `email` varchar(50) NOT NULL, PRIMARY KEY (`id`), INDEX `idx_name` (`name`), INDEX `idx_email` (`email`) ) ENGINE=InnoDB;
Dans l'exemple ci-dessus, une table nommée user
est créée et le nom< Indexes sont créés sur les colonnes /code> et <code>email
. user
的表,并在name
和email
列上创建了索引。
在已存在的表上创建索引:
ALTER TABLE `user` ADD INDEX `idx_name` (`name`);
上述示例在已存在的user
表上创建了一个名为idx_name
的索引。
三、使用索引优化查询:
通过合理使用索引,可以大大提高数据库查询的效率。以下是一些使用索引优化查询的示例:
筛选查询结果:
SELECT * FROM `user` WHERE `name` = 'John' AND `email` = 'john@example.com';
在上述示例中,name
和email
列上创建了索引,可以快速定位到符合条件的数据。
排序查询结果:
SELECT * FROM `user` ORDER BY `name`;
在上述示例中,对name
列创建了索引,可以加速查询结果的排序过程。
连接查询:
SELECT * FROM `user` INNER JOIN `order` ON `user`.`id` = `order`.`user_id`;
在上述示例中,对连接字段user_id
<?php // 使用缓存插件 $cache = new Memcached(); $cache->addServer('localhost', 11211); // 查询缓存 $result = $cache->get('user:1'); if (!$result) { // 从数据库获取数据 $result = $db->query("SELECT * FROM `user` WHERE `id` = 1")->fetch(); // 将查询结果保存到缓存 $cache->set('user:1', $result, 3600); } // 使用缓存的查询结果 echo $result['name']; ?>
idx_name
sur la table user
existante. rrreee
Dans l'exemple ci-dessus, les index sont créés sur les colonnesname
et email
, qui peut localiser rapidement les données qui remplissent les conditions.
Trier les résultats de la requête :
name
, ce qui peut accélérer le processus de tri des résultats de la requête. 🎜🎜🎜🎜Requête de connexion : 🎜rrreee🎜Dans l'exemple ci-dessus, un index est créé sur le champ de connexion user_id
, ce qui peut accélérer le processus de connexion des tables de données. 🎜🎜🎜🎜 4. Utilisez le cache pour améliorer le taux de réussite : 🎜En plus d'améliorer l'efficacité des requêtes grâce à l'indexation, l'utilisation du cache peut également améliorer la vitesse de réponse du système et le taux de réussite du cache. 🎜🎜🎜Utiliser des plug-ins de cache : 🎜En PHP, vous pouvez utiliser des plug-ins de cache (tels que Memcached, Redis, etc.) pour enregistrer les résultats des requêtes. Lorsque les mêmes résultats de requête seront nécessaires la prochaine fois, ils pourront être obtenus directement à partir du cache sans accéder à nouveau à la base de données. 🎜🎜Définir le délai d'expiration du cache : 🎜Pour certaines données qui ne changent pas fréquemment, vous pouvez définir le délai d'expiration du cache. Lorsque le cache expire, de nouvelles données sont récupérées de la base de données et le cache est mis à jour. 🎜🎜🎜Exemple de code : 🎜rrreee🎜L'exemple de code ci-dessus utilise le plug-in de mise en cache Memcached pour enregistrer les résultats de la requête dans le cache et définir une période de validité de 1 heure. Lorsque les mêmes données seront interrogées la prochaine fois, elles pourront être obtenues directement à partir du cache, améliorant ainsi la vitesse de réponse du système et le taux de réussite du cache. 🎜🎜Conclusion : 🎜En utilisant rationnellement les index et les caches, le taux de réussite du cache et l'efficacité des requêtes de base de données de PHP et MySQL peuvent être considérablement améliorés. Il mérite notre attention lors du développement et de l’optimisation de sites Web et d’applications. J'espère que l'introduction et l'exemple de code de cet article vous seront utiles. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!