我的SQL查询:
SELECT * FROM updates_cats WHERE uid =118697835834 ORDER BY created_date ASC
当前指数:
index1(uid, created_date)
说明扩展结果:
1 SIMPLE updates_cats ref index1 index1 8 const 2 100.00 Using where
如何在“使用位置”处固定“额外”字段,以便可以改为使用索引?
编辑:显示创建表:
CREATE TABLE `updates_cats` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `u_cat_id` bigint(20) NOT NULL DEFAULT '0', `uid` bigint(20) NOT NULL, `u_cat_name` text COLLATE utf8_unicode_ci NOT NULL, `total_updates` int(11) unsigned NOT NULL DEFAULT '0', `created_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`), KEY `index1` (`uid`,`created_date`) ) ENGINE=MyISAM AUTO_INCREMENT=23522 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
这将是好过的唯一的事情Using where是Using where; Using index一个“覆盖索引”。尝试选择公正uid和created_date。
Using where
Using where; Using index
uid
created_date
Using where很好 这意味着它将指示的索引应用于WHERE子句并减少返回的行。要摆脱它,您必须摆脱该WHERE子句。
WHERE
您应该注意以下事项:
Using filesort
Using temporary
NULL
EXPLAIN
您的EXPLAIN结果表明MySQL正在应用index1该WHERE子句并返回2行:
index1