J'ai dans ma base de données MySQL:ces deux tables optimisation de la structure des requêtes MySQL/base de données
CREATE TABLE IF NOT EXISTS `articles` (
`id` bigint(20) NOT NULL,
`url` varchar(255) collate utf8_bin NOT NULL,
`img` varchar(255) collate utf8_bin NOT NULL,
`name` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
`url_key` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
`type_code` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
`likes_count` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `type` (`type`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
CREATE TABLE IF NOT EXISTS `articles_types` (
`id` int(11) NOT NULL auto_increment,
`code` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
`url_key` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
`name` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`code`),
KEY `type` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
Et je suis en train d'exécuter cette requête:
SELECT a.* FROM `articles` a INNER JOIN articles_types at ON at.`code`=a.type ORDER BY p.likes_count DESC LIMIT 1
qui retourne 1 rang, en 1sec.
Les articles de table se composent d'environ 70k rangées, les articles_types seulement environ 70 rangées.
Y a-t-il une chance d'optimiser la structure (peut-être le moteur?) De ces tables, ou d'optimiser la requête elle-même pour la rendre plus rapide?
Avez-vous des indices sur ces tableaux? Si oui, dites-nous quelles colonnes sont couvertes. –
2Dustin: Comme vous pouvez le voir ci-dessus, les tables se composent de plusieurs index, maintenant j'ai ajouté un nouvel index à articles.like_count, parce que les résultats sont triés par cette colonne. Mais cela n'a pas aidé. –
2Damien: Merci d'avoir réfléchi à ce sujet :-) Croyez-moi, si j'obtenais vraiment réponse, ce qui résoudrait mes problèmes, j'accepterais cette réponse. –