关于MYSQL索引优化和in or替换为union all的问题

/article/category-5

limit 5

使用【PHP伪静态】时,想要获取不规则的URL参数是比较麻烦,比如:

order by article_id desc

$url = explode('/', '/article/category-5/status-2/page-3');

$params = array();

foreach ($url as $v)
{
    $temp = explode('-', $v);
    if (isset($temp[1]))
        $params[$temp[0]] = $temp[1];
}

var_dump($params);
//该片段来自于http://outofmemory.cn

orDER BY article_id desc

/article/author-1086

or article_category=3

/article/category-5/author-1086/page-12

 

下面这段代码可以帮大家解决问题。

 

Select * FROM `article` Where article_category IN (2,3) orDER BY
article_id DESC LIMIT 5 执行时间要11.2850秒。mgm娱乐场,
 

article里面有一个”article_category”字段是与category里的”category_id”字段相对应的。
article表里面已经把 article_category字义为了索引。数据库大小为1.3G。
 

使用UNION ALL:

解决方案:避免使用in 或者 or (or会导致扫表),使用union all

 

解决方案:
 

 

UNION ALL (select * from article where article_category=3 order by
article_id desc limit 5)

一个文章库,里面有两个表:category和article。category里面有10条分类数据。article里面有
20万条。

问题描述:
 

相关文章