有张表 hits (id,webinfo_id,ck_id) 主键是id,其中每个字段各自建立了索引
EXPLAIN
SELECT h.webinfo_id
FROM hits h
WHERE h.ck_id in (739,745)
ORDER BY h.webinfo_id DESC 数据大概50条W,只用到ck_id字段的索引, 导致ORDER BY慢了好几秒
网上查了说mysql只能用到一个索引
因此建立一个多列索引(webinfo_id,ck_id)可以解决,但是这样单独对ck_id 进行查询则没有索引
有什么好的解决办法吗,SQL语句能优化吗?
还是说再建立一个ck_id的索引 那这样 是不是会导致索引文件太大,更新变慢?
EXPLAIN
SELECT h.webinfo_id
FROM hits h
WHERE h.ck_id in (739,745)
ORDER BY h.webinfo_id DESC 数据大概50条W,只用到ck_id字段的索引, 导致ORDER BY慢了好几秒
网上查了说mysql只能用到一个索引
因此建立一个多列索引(webinfo_id,ck_id)可以解决,但是这样单独对ck_id 进行查询则没有索引
有什么好的解决办法吗,SQL语句能优化吗?
还是说再建立一个ck_id的索引 那这样 是不是会导致索引文件太大,更新变慢?
FROM hits h
WHERE h.ck_id i=739
union
SELECT h.webinfo_id
FROM hits h
WHERE h.ck_id =745试试这样