php - Problèmes classiques d'optimisation des index MYSQL,
某草草
某草草 2017-05-16 13:07:33
0
1
551

La question est la suivante :

< /p>

Comme ça

< /p>

La structure du tableau est la suivante :

CRÉER TABLE `lmx_app_category` (
  `id` int(11) NON NULL PAR DÉFAUT '0' COMMENTAIRE 'Numéro de catégorie',
  `pid` tinyint(4) NON NULL PAR DÉFAUT '1' COMMENTAIRE 'Type de classification (actuellement deux : 1 : application, 2 : jeu)',
  `name` varchar(50) NOT NULL COMMENT 'Nom de la catégorie',
  CLÉ PRIMAIRE (`cat_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Tableau de classification des applications';

CRÉER UNE TABLE `lmx_apps` (
  `id` int(11) NON NULL AUTO_INCREMENT COMMENT 'numéro d'application',
  `cat_id` int(11) NON NULL PAR DÉFAUT '0' COMMENTAIRE 'Numéro de catégorie',
  `name` varchar(100) NON NULL COMMENTAIRE 'nom de l'application',
  `year` char(5) NON NULL PAR DÉFAUT '0' COMMENTAIRE 'Année',
  `down_count` bigint(20) NON NULL PAR DÉFAUT '0' COMMENTAIRE 'Téléchargements',
  `hit_count` bigint(20) PAR DÉFAUT '0' COMMENTAIRE 'volume de recherche',
  CLÉ PRIMAIRE (`id`),
) MOTEUR=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;


J'ai maintenant créé deux index communs :

< /p>

Mais il y a plusieurs problèmes avec ces deux index. Si je clique sur Rechercher tout, le tri ne sera pas indexé. Comment résoudre ce problème de sélection de tout sans indexation lors de la recherche de catégories ?

Le SQL pour l'indexation est le suivant :

-- EXPLIQUER SELECT a.id,a.cat_id,a.`name`,a.down_count,b.`name` FROM `lmx_apps` a JOINTURE INTÉRIEURE `lmx_app_category` `b` SUR `a`.`cat_id`=`b`.`id` OÙ a.cat_id = 103 COMMANDE PAR a.down_count DESC LIMITE 10,20

Le SQL sans indexation est le suivant

 SELECT a.id,a.cat_id,a.`name`,a.down_count,b.`name` FROM `lmx_apps` a

 JOINTURE INTÉRIEURE `lmx_app_category` `b`
 
 SUR `a`.`cat_id`=`b`.`id`

  -- OÙ
  -- a.cat_id IN (SELECT cat_id FROM lmx_app_category WHERE orgame = 1)
  -- Lorsqu'il n'y a pas de condition cat_id ou que la condition est

 COMMANDE PAR a.down_count DESC
    
 LIMITE 10,20
某草草
某草草

répondre à tous(1)
曾经蜡笔没有小新

Maintenant, je pense à un autre plan, qui est

Supprimez le champ cat_id de la table d'application et l'index créé par cat_id

Créez une table de relations entre la table de classification (lmx_app_category) et la table d'application (lmx_apps),

Les champs sont id, app_id, cat_id

Créez un index sur cette table associée. Je ne sais pas à quoi ressemble cette solution

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