购物网站开发流程图,网站策划书总结,好的网站建设启示,大鹏网站建设公司1、MySQL 分组查询文章表各个分类的前N条数据
时间复杂度均为分组中条目数的二次方。而且#xff0c;很多优化器都不能优化这种查询#xff0c;使得它的耗时最好为全表行数的二次方(尤其在没有设置正确的索引时)#xff0c;而且数据量大时#xff0c;可能将服务器会停止响… 1、MySQL 分组查询文章表各个分类的前N条数据
时间复杂度均为分组中条目数的二次方。而且很多优化器都不能优化这种查询使得它的耗时最好为全表行数的二次方(尤其在没有设置正确的索引时)而且数据量大时可能将服务器会停止响应。SELECT A1.* FROM cd_app2_article AS A1 INNER JOIN (SELECT A.cate_id,A.create_time FROM cd_app2_article AS A LEFT JOIN cd_app2_article AS B ON A.create_time B.create_time AND A.id B.id GROUP BY A.cate_id,A.create_time HAVING COUNT(B.id) 10 ) AS B1 ON A1.cate_id B1.cate_id AND A1.create_time B1.create_time
ORDER BY A1.cate_id,A1.create_time DESC//那么还有更好的方法吗有没有办法可以仅仅扫描一次数据而不是通过子查询进行多次扫描
//有使用 UNION(SELECT * FROM cd_app2_article WHERE cate_id1 ORDER BY id DESC LIMIT 10)
UNION ALL
(SELECT * FROM cd_app2_article WHERE cate_id4 ORDER BY id DESC LIMIT 10)
UNION ALL
(SELECT * FROM cd_app2_article WHERE cate_id7 ORDER BY id DESC LIMIT 10)//使用UNION的方式是一个很好的选择。而当你要获取数据表中大部分条目时也有一种能达到线性时间的方法那//就是使用用户定义变量。太专业了没去深究给出别人的一个学习示例set num : 0, type : ;
selecttype, variety, price
from(
selecttype, variety, price,
num : if(type type, num 1, 1)as row_number,
type :type as dummy
fromfruits
orderby type, price
)as x where x.row_number 2;2、查询文章表中各个分类的总数
SELECT cate_id,COUNT(*) FROM cd_app2_article GROUP BY cate_id