mysql 索引优化 null_MYSQL 索引优化的经典问题,

问题如下:

2d05afd1770826e7a20df0eb09c5cd91.png

就像这样的

aa7170e91817868cd16678e1d965d0df.png

表结构如下:

CREATE TABLE `lmx_app_category` (

`id` int(11) NOT NULL DEFAULT '0' COMMENT '分类编号',

`pid` tinyint(4) NOT NULL DEFAULT '1' COMMENT '分类的类型(目前两个 1:应用,2:游戏)',

`name` varchar(50) NOT NULL COMMENT '分类名称',

PRIMARY KEY (`cat_id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='应用分类表';

CREATE TABLE `lmx_apps` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'app编号',

`cat_id` int(11) NOT NULL DEFAULT '0' COMMENT '分类编号',

`name` varchar(100) NOT NULL COMMENT 'app名称',

`year` char(5) NOT NULL DEFAULT '0' COMMENT '年份',

`down_count` bigint(20) NOT NULL DEFAULT '0' COMMENT '下载量',

`hit_count` bigint(20) DEFAULT '0' COMMENT '搜索量',

PRIMARY KEY (`id`),

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

我现在建立了两个联合索引:

dee26a9eb997d38f13138a8e2ccd31e6.png

但是这个两个索引存在几个问题,如果我点击搜索全部 那么 排序就不会走索引,怎么解决这个搜索分类时选择 全部 不走索引的问题、

走索引的 sql 如下:

-- EXPLAIN

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

INNER JOIN `lmx_app_category` `b`

ON `a`.`cat_id`=`b`.`id`

WHERE

a.cat_id = 103

ORDER BY a.down_count DESC

LIMIT 10,20

不走索引的 sql 如下

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

INNER JOIN `lmx_app_category` `b`

ON `a`.`cat_id`=`b`.`id`

-- WHERE

-- a.cat_id IN (SELECT cat_id FROM lmx_app_category WHERE orgame = 1)

-- 当没有 cat_id 这个条件 或者这个条件为 in 时

ORDER BY a.down_count DESC

LIMIT 10,20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值