count优化

MyISAM会将总记录数缓存,但如果加上where条件,则缓存值失效。

若有500w条记录,需要统计id > 100的总行数。

一个优化思路,反向操作,降低查询次数。

select 

(select count(*) from student) - count(*) 

from student where id <= 100;

优化Limit分页(深分页问题)

场景模拟

插入10w条样例数据

DROP TABLE IF EXISTS `student`;

CREATE TABLE `student` (
`stuid` int(11) unsigned NOT NULL AUTO_INCREMENT,
`stuname` varchar(200) DEFAULT NULL,
`stuaddress` varchar(200) DEFAULT NULL,
`classid` int(11) DEFAULT NULL,
PRIMARY KEY (`stuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DELIMITER //
create procedure doinsert1()
begin
declare i int;
declare j int;
set i = 1;
set j = 1;
while i<100000 do
insert into student(stuid,stuname,stuaddress,classid)values(i,concat(i,'张',j),'深圳',i+j);
set i = i+1;
set j = j+1;
end while;
end;//
call doinsert1()

执行小的偏移量查询

执行大的偏移量查询

分析

# 打开show profile,收集在执行语句的时候所使用的资源。
SET profiling = 1; # show profiles;
show profiles; # 通过对应的QUERY_ID查看
show profile for query 1;

耗时最多的是Sending Data,可以看到查询数据花了大量的时间。

优化方案一

将limit转换为where...between


select * from student where stuid between 90002 and 90021;

优化方案二

通过where缩小范围

如上一页获取到的最后的结果是90001,则下一页则加上classid > 90001,来缩小范围。

select * from student where classid > 90001 order by stuid limit 20;

优化方案三

从业务上进行优化,结合业务,将最大翻页控制在指定范围,例如最多只允许翻到100页。

若想要获得更多数据,需要修改关键词或增加筛选条件。

优化方案四

利用覆盖索引,先查询指定的id,然后用inner join进行关联。


select s.* from student s inner join (
select stuid from student order by classid limit 90000,20) as tmp on s.stuid = tmp.stuid;

使用变量减少查询次数

需求是:使用分数排名,存在并列第一或第n的情况。


create table t10( name char(10) not null default '', score int not null default 0)engine myisam charset utf8; insert into t10 values('zhang',100),('wang',95),('li',92),('liu',100);

使用变量set @age:=20,查询变量select @age


select name,(@curr:=score) as score,@rank:=if(@curr<>@prev,@rank:=@rank+1,@rank) as rank,@prev:=score as prev from t10 order by score desc;

问题分析——Maven打包后发版,静态资源找不到的更多相关文章

  1. Vue打包后访问静态资源路径问题

    Vue介绍中static文件夹里放的是静态资源目录,如图片.字体等. 我们发现运行npm run start后本地图片路径是没问题的,但是打包上传后会怎么样呢? 我们知道,执行npm run buil ...

  2. vue-cli3.x正确打包项目,解决静态资源与路由加载无效的问题,history模式下配合使用nginx运行打包后的项目

    使用vue-cli3.x正确打包项目,配合nginx运行打包后的内容 vue.config.js module.exports = { publicPath: './',//打包后的位置(如果不设置这 ...

  3. vue项目之webpack打包静态资源路径不准确

    摘自:https://blog.csdn.net/viewyu12345/article/details/83187815 问题 将打包好的项目部署到服务器,发现报错说图片找不到. 静态资源如js访问 ...

  4. vue打包静态资源路径不正确的解决办法【转】

    vue项目完成打包上线的时候很多人都会碰到静态资源找不到的问题,常见的有两个 1.js,css路径不对 解决办法:打开config/index.js,将其中的assetsPublicPath值改为’. ...

  5. vue打包静态资源路径不正确的解决办法

    vue打包静态资源路径不正确的解决办法 vue项目完成打包上线的时候会碰到静态资源找不到的问题,常见的有两个 1.js,css路径不对 解决办法:打开config/index.js,将其中的asset ...

  6. vue项目打包部署到服务器,静态资源文件404

    js文件404问题        原因:打包的项目静态资源的路径需要设置为绝对路径.如果是相对路径会出错 解决办法:修改config/index.js文件,将 assetsPublicPath修改为' ...

  7. SpringMVC静态资源拦截的问题

    通常在web.xml中的核心控制器的DispatcherServlet中的url-pattern属性配置成类似“/”的拦截路径,但是会出现静态资源找不到的问题,比如js脚本.图片.css等无法加载,那 ...

  8. maven打包忽略静态资源解决办法,dispatchServlet拦截静态资源请求的解决办法

    问题: maven 打包时,有的文件打不进去target 解决: 因为maven打包默认打Java文件.在项目中的pom文件中加build标签 <build> <resources& ...

  9. eclipse使用maven打包的时候发现静态资源没包含进去

    今天在打包的时候,发现传上去的包里没有配置静态资源. (右键项目--->Run As ---> 8 Maven install  ) 后来发现是因为在pom.xml里没有配置打包静态资源的 ...

随机推荐

  1. 【转载】 Asp.Net安全之防止脚本入

    在ASP.NET开发过程中,安全性是必须要重中之重需要考虑的,其中一种情况是要防止用户输入恶意脚本入侵的情况,恶意脚本入侵指的是用户在提交内容中提交了包含特殊Javascript脚本程序等非法信息,如 ...

  2. 这个一个对ES6多个异步处理的并发继发思想的总结和理解

    1.首先我们需要理解的是js中for循环.forEach循环.map循环的一些差异性,直接说了为后面说到的提供一些依据 1.1 for循环最基本,也是最容易理解的. 1.2 forEach和map用法 ...

  3. you might not need jquery

    What's the oldest version of IE you need to support? IE10 /**json**/ var request = new XMLHttpReques ...

  4. 直接插入排序算法(java)

    直接插入排序是将未排序的数据插入至已排好序序列的合适位置. 具体流程如下: 1.首先比较数组的前两个数据,并排序: 2.比较第三个元素与前两个排好序的数据,并将第三个元素放入适当的位置: 3.比较第四 ...

  5. <<构建之法>>--第二次作业

    GIT地址 https://github.com/Panghu98/AchaoCalculator.git GIT用户名 Panghu98 学号后五位 62632 博客地址 https://www.c ...

  6. thrift入门(1)

    参考:https://www.jianshu.com/p/4723ce380b0e https://www.cnblogs.com/carlos-mm/p/6297197.html 一. 什么是Thr ...

  7. 【Java】《Java程序设计基础教程》第一章学习

    一.Java概述 1.介绍了Java语言的由来 2.Java语言的特点:简单.面向对象.分布式.高效解释执行.健壮.安全.结构中立.可移植.高效率.多线程.动态 3.Java语言的实现机制,引入虚拟机 ...

  8. 用CSS 实现 非浮动元素的 水平居中/垂直居中/水平垂直居中

    一.水平居中 (1)行内元素解决方案 只需要把行内元素包裹在一个属性display为block的父层元素中,并且把父层元素添加如下属性即可:   .parent { text-align:center ...

  9. Selenium常用API的使用java语言之7-控制浏览器操作

    (六)控制浏览器操作 1.控制浏览器窗口大小 有时候我们希望能以某种浏览器尺寸找开,访问的页面在这种尺寸下运行.例如可以将浏览器设置成移动端大小(480* 800),然后访问移动站点,对其样式进行评估 ...

  10. python实现字符串中如果遇到连续重复的字符只出现一次非去重

    需求:在一个字符串中, 如果遇到连续重复的字符只出现一个,(不是去重) 例:str1 = 'aabbccddaabbccdd' 输出结果为:‘abcdabcd’ 具体实现代码如下: def func( ...