分页

MySQL分页查询性能优化

徘徊边缘 提交于 2019-12-17 04:22:28
当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。对于数据库分页查询,也有很多种方法和优化的点。下面简单说一下我知道的一些方法。 准备工作 为了对下面列举的一些优化进行测试,下面针对已有的一张表进行说明。 表名:order_history 描述:某个业务的订单历史表 主要字段:unsigned int id,tinyint(4) int type 字段情况:该表一共37个字段,不包含text等大型数组,最大为varchar(500),id字段为索引,且为递增。 数据量:5709294 MySQL版本:5.7.16 线下找一张百万级的测试表可不容易,如果需要自己测试的话,可以写shell脚本什么的插入数据进行测试。 以下的 sql 所有语句执行的环境没有发生改变,下面是基本测试结果: select count(*) from orders_history; 返回结果:5709294 三次查询时间分别为: 8903 ms 8323 ms 8401 ms 一般分页查询 一般的分页查询使用简单的 limit 子句就可以实现。limit 子句声明如下: SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于指定

一些使用ASP.NET和VISUAL STUDIO.NET2003的经验和技巧

痴心易碎 提交于 2019-12-17 04:21:16
1,不要在VS里直接复制ASPX文件,因为复制的时候,两个文件会使用同一个类文件,要复制的话,应该建空文件,然后复制页面和代码 2,发在项目完工的时候,要想得到一个干净的,仅有必需文件的项目,可以用复制项目的方法,注意的时,包含在项目的文档将会被编译及复制,没有包含的文档不会被复制,复制前,需要建立一个目标空站点,复制的方法应该选文件共享 3.VS.net中每一个文件的生成方法都有编译,内容,嵌入三种,对于CS文件,其生成方法应该为编译,对于ASPX文件,应该为内容,对于像想嵌入到DLL中的资源,如BMP图像,ICO图像,字符串等,应设为嵌入 其他文件,均设为内容 4.DATAREADER能解决的,请不要用DATASET 5.处理控件的分页,特别是DATAGIRD时,请尽量用自定义分页,然后自己写分页方法,不要用DATAGRID的自动分页功能,自动分页的性能不好 6.有时候,定义了一个WEB项目,在定义中,定义了其URL,如http://localhost:8001/,但是后来项目的URL可能发生了变化,成了http://localhost:8009,这个时候,直接打开项目可能不会成功,可以找到项目源文件所在文件夹,用记事本打开后缀为.webinfo的文件,修改其中的URL指向即可 7.在VS.NET中,添加窗体,必然会添加相应的CS类文件,有时候,希望直接在ASPX文件中以<%%

MySQL学习之分页方案

*爱你&永不变心* 提交于 2019-12-17 01:44:38
分页方案 # 分页性能相关方案 # 方案一:(O(∩_∩)O) 不让看,例如博客园 # 方案二: # 运用覆盖索引的方式去索引表进行扫描:(这种方式并没有快多少) select * from userinfo where userinfo . uid in ( select uid from userinfo limit 700000 , 10 ) ; # 方案三:(如果想实现跳转,那么基于数据库来实现不方便,可以基于其他形式例如缓存机制实现) # 做记录,记录当前页的最大ID和最小ID # max_id # min_id # 形式一:只有上一页、下一页 # 下一页: select * from userinfo where uid > 700000 / max_id limit 10 ; # 上一页: select * from ( select * from userinfo where uid < 700001 / min_id order by uid desc limit 10 ) as ReversedLastPage order by ReversedLastPage . uid asc ; # 注意:between and 如果在uid都是连续的情况下,那是最好的啦。但uid不一定连续。 # 形式二:上一页 192 193 ... [196] 197 198 199

Java对List进行分页

柔情痞子 提交于 2019-12-16 22:51:52
Java对组装的List分页 以前一直是在DAO层直接从数据库里分页,但是今天因为有些数据,需要混合展示,就是根据条件取出了多个对象的集合,然后把这些多个List放到一个List里,然后在从这个List里进行分页。 1 public SearchResult paging(List<T> list, int pageNumber, int pageSize) throws Exception{ 2 List<T> pageList = new ArrayList<T>(); 3 int currIdx = (pageNumber > 1 ? (pageNumber -1) * pageSize : 0); 4 for (int i = 0; i < pageSize && i < list.size() - currIdx; i++){ 5 T listNew = list.get(currIdx + i); 6 pageList.add(listNew); 7 } 8 SearchResult<T> searchResult = new SearchResult<>(); 9 searchResult.setList(pageList); 10 searchResult.setTotal(list.size()); 11 if (searchResult.getTotal()

Flask-分页

筅森魡賤 提交于 2019-12-16 13:59:26
Flask-分页 1.paginate的用法 Flask中的paginate可实现数据分页的效果,paginate(page, per_page, error_out=True) page - 当前页数 per_page - 每页显示的条数 error_out - 是否打印错误信息 paginate的属性 paginate.page - 当前页数 paginate.pages - 总页数 paginate.total - 总条数 paginate.has_pre - 是否存在上一页 返回布尔值 paginate.has_next - 是否存在下一页 返回布尔值 paginate.iter_pages() - 所有页码 返回一个列表如[1, 2, 3, 4] paginate(page, per_page, error_out).items - 返回当前页的所有数据 实例:查询当前所有学生信息 视图 @app.route('/get_student/') def get_student(): page = request.args.get('page', 1, type=int) per_page = int(request.args.get('per_page', 2)) paginate = Student.query.order_by(Student.id.desc())

jqGrid弹出表格设置分页

耗尽温柔 提交于 2019-12-16 13:11:40
点击时候方法 // 成员人数 function modify6(rows){ $("#table_list_2").jqGrid("clearGridData"); $("#table_list_2").jqGrid('setGridParam',{ datatype:"json", postData:{ "id":rows.club_id }, url:"", }).trigger("reloadGrid"); setTimeout(function () { var width = $('#Tmoda').width(); $('#table_list_2').setGridWidth(width); $(".jqGrid_wrapper_2").show(); }, 500) } 主体表格记得添加jsonReader jsonReader:{ root: "data.data", //数据位置 page: "data.page_index", //页数 total: "data.total_count",//总页数 records: "data.total", //总数据 }, 来源: https://www.cnblogs.com/PoisonousMushrooms/p/12038448.html

【原】django实现列表分页功能

无人久伴 提交于 2019-12-16 13:05:23
在view.py里添加分页查询方法: 1 from django.http import JsonResponse 2 from django.views.decorators.http import require_http_methods 3 from django.core import serializers 4 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 5 import json 6 7 # 分页查询 8 def show_page(request): 9 page = request.GET.get('page') 10 pageSize = int(request.GET.get('pageSize')) 11 response = {} 12 book_list = Book.objects.all() 13 paginator = Paginator(book_list, pageSize) 14 response['total'] = paginator.count 15 try: 16 books = paginator.page(page) 17 except PageNotAnInteger: 18 books = paginator.page(1)

MySQL分页查询优化

跟風遠走 提交于 2019-12-16 10:55:57
当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。对于数据库分页查询,也有很多种方法和优化的点。下面简单说一下我知道的一些方法。 准备工作 为了对下面列举的一些优化进行测试,下面针对已有的一张表进行说明。 表名:order_history 描述:某个业务的订单历史表 主要字段:unsigned int id,tinyint(4) int type 字段情况:该表一共37个字段,不包含text等大型数据,最大为varchar(500),id字段为索引,且为递增。 数据量:5709294 MySQL版本:5.7.16 线下找一张百万级的测试表可不容易,如果需要自己测试的话,可以写shell脚本什么的插入数据进行测试。 以下的 sql 所有语句执行的环境没有发生改变,下面是基本测试结果: select count(*) from orders_history; SQL 返回结果:5709294 三次查询时间分别为: 8903 ms 8323 ms 8401 ms 一般分页查询 一般的分页查询使用简单的 limit 子句就可以实现。limit 子句声明如下: SELECT * FROM table LIMIT [ offset , ] rows | rows OFFSET offset SQL LIMIT

如何在实际项目中使用PageHelper分页插件

我怕爱的太早我们不能终老 提交于 2019-12-16 10:51:29
PageHelper是一个分页插件,能够简单快速的帮助开发人员完成常见的分页功能,你只需要简单的使用两行代码就可以完成一个分页效果… 最近做一个科创项目,使用Maven+SSM的环境,有分页的功能,于是使用了PageHelper的分页工具来完成分页功能,体验非常不错。 1. 数据库准备 t_diy是用户自己写个性文章的的一个表,t_categories是文章的分类表,t_user用户表;要分页显示的就是根据分类ID查找对应类别的diy信息并显示。 2. PageHelper引入 1. 在pom.xml中引入依赖 12345 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.10</version></dependency> (官方推荐使用最新版本,当前最新是5.1.10) 虽然官方说明要引入pagehelper.jar和jsqlparser.jar,但实际上引入pagehelper.jar时会自动引入jsqlparser.jar 2. 配置Mybatis插件 可以选择在spring配置文件中配置,也可以在mybatis全局配置文件中配置插件。我是在mybatis全局文件中配置的。 123 <plugins> <plugin

五-分页之初识

人走茶凉 提交于 2019-12-16 10:50:50
一.分页之展示所有页码 1.写一个几百条数据测试的页面: (1)首先全局urls.py: url(r'^user_list/',views.user_list), (2)views.py中 : def user_list(request): return render(request,'user_list.html') (3)templates/user_list.html : {% extends 'layout.html' %}{% block content %}{% endblock %} 这就是用户数据测试的页面: (4).在数据测试页面伪造点数据: views.py中: users = [{'name':'zhihua{}'.format(i),'pwd':'zh12345{}'.format(i)} for i in range(1,302)]#列表中生成301条字典即数据,每一个人即一个字典。 def user_list(request): return render(request,'user_list.html',{'data':users}) #把301条字典传给前面渲染 (5).在前端页面把301数据展示出来: (1)在用户测试页面面板设置表格样式: {% extends 'layout.html' %}{% block content %} <table