发表于: 2025-04-22 09:04:07
0 94
今天完成的任务:把任务一深度思考全部看完。
学习:28.怎么进行分页数据的查询,如何判断是否有下一页?
分页的分类
1.物理分页
2.逻辑分页
介绍:
物理分页依赖的是某一物理实体,这个物理实体就是数据库,比如MySQL数据库提供了limit关键字,程序员只需要编写带有limit关键字的SQL语句,数据库返回的就是分页结果。
逻辑分页依赖的是程序员编写的代码。数据库返回的不是分页结果,而是全部数据,然后再由程序员通过代码获取分页数据,常用的操作是一次性从数据库中查询出全部数据并存储到List集合中,因为List集合有序,再根据索引获取指定范围的数据。
总的来说物理分页就是要多少取多少,少取点节约电脑和服务器的性能,如果一页显示太多,电脑会死机的,目前尝试过一页显示3000多万就死机了的。
逻辑分页就是一次性全部查出来,要的时候再去一段段的取,数据少的时候可以,多了也是影响性能。因为是全取嘛。
如何判断是否有下一页?
获取总的记录数,拿记录总数除以每页的记录数,只要能取余,就有下一页
例如有21条数据,每页10条,相除等于2余1,就能判断出可以分成完整的2页和只有1条数据的第3页
在千万级别的数据库里怎么能加快分页查询?
SELECT * FROM student WHERE ID >=(select ID from student limit 10000000, 1) limit 10;
查询student表里ID大于或等于(student表里第一千万条记录的ID字段的值)取前10条
如第一千万条记录的ID=10001000
SELECT * FROM student WHERE ID >= 10001000 limit 10;
即查询第10001000条开始至后面10条记录
注:limit 10;等于limit 0,10;
学习:29.为什么不可以用Select * from table?
1.背景介绍
MySQL数据库简介:
1、MySQL是一个关系型数据库,关联的数据保存在不同的表中,增加了数据操作的灵活性。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。MySQL工作模式是基于客户机/服务器结构。目前它可以支持几乎所有的操作系统,同时也可以和php完美结合。简单的来说,MySql是一个开放的、快速的、多线程的、多用户的SQL数据库服务器。
2、select * from table是mysql中用来查询某张表的所有字段的sql语句;
3、我们大概都知道这样写不是那么的高效,没有针对性。
2.1 Mysql语句执行的原理
第一步:应用程序把查询SQL语句发给服务器端执行。
第二步:服务器解析请求的SQL语句。
第三步:语句执行。
2.2 select * from table 的缺点:
1、mysql拿到一条命令,会去解析命令、优化查询,然后去存储引擎执行查找.SELECT * 语句取出表中的所有字段,会解析更多的 对象,字段,权限,属性相关,不论该字段的数据对调用的应用程序是否有用,这会对服务器资源造成浪费,导致优化和效率问题,对服务器的性能产生一定的影响。
2、如果表的结构在以后发生了改变,那么SELECT * 语句可能会取到不正确的数据甚至是出错。
3、执行SELECT * 语句时,select * 语句要对表中所有列进行权限检查,这部分也是开销
4、使用SELECT * 语句将不会使用到覆盖索引,不利于查询的性能优化.(索引覆盖:索引覆盖是一种速度极快,效率极高,业界推荐的一种查询方式.就是select的数据列只用从索引中就能够获得,不必从数据表中读取,也就是查询列要被所使用的索引覆盖)
5、在文档角度来看,SELECT * 语句没有说明将要取出哪些字段进行操作,不具备针对性,不推荐。
6、用 select * 语句插入一个表,以后表结构修改了,如增加或删除了一列,对代码影响很大,如果只是恰好只获取自己需要的那几列,表结构的修改对你的代码影响就会比较小,便于后期项目维护。
学习:30.maven是什么,和Ant有什么区别?
一、背景介绍
Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具
Maven的核心功能便是合理叙述项目间的依赖关系,通俗点讲,就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包
软件开发其实是一件很复杂的事情,是一个从0到1的过程,原始的软件开发工作需要耗费大量的时间,同时极其的耗费脑力、精力。在这中情况下各种各样的构建和框架就被程序员前仆后继的开发出来,以减轻开发人员的工作量,提高开发效率。ant和maven就是这样逐步出现的。下面是我从apache官网中将关于ant和maven的简介的第一句话,复制下来,从这两段话,就可以对ant和maven的区别有一个大概的了解。当然我个人认为,如果是要成为这方面的大牛,这两款软件还是有很多很深的知识需要了解,但如果只是平常工作的话,其实选择maven是很好的选择。
关于Maven--->Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM,项目对象模型), Maven can manage a project's build, reporting and documentation from a central piece of information.
关于Ant--->Apache Ant is a Java library and command-line tool whose mission is to drive processes described inbuild filesas targets and extension points dependent upon each other. The main known usage of Ant is the build of Java applications. Ant supplies a number of built-in tasks allowing to compile, assemble, test and run Java applications.
二.知识剖析
maven&antapach区别。
都是为了简化软件开发而存在的。但是maven因为自身管理一个项目对象模型(project object model),这个模型其实就是抽象了一个项目的开发流程,它包含了一个项目的生命周期的各个阶段,并将这个周期固定下来,这也就是约定大于配置。约定大于配置的意思就是,我maven将项目开发的各个阶段固定起来了,每个文件的存放位置,每个阶段要生成什么文件、保存为什么格式并且要把它放在什么位置,我都固定好了。我知道一个软件是怎么开发出来,如果一个项目要使用maven,可以,但你要遵循我的规则,文件目录不要乱建乱放,只有这样maven才会将源码用起来。这就是约定大于配置,因为maven已经将流程固定下来了,只要遵守约定,就不需要自己手动去配置了,这将大大地提高开发效率。
2.maven的中央仓库和pom.xml文件。中央仓库统一存放了开发用到的各种jar包,要用时只需要添加依赖到pom文件中,maven就会自动下载,当然为了方便一般会在本地建一个仓库,减少下载时间。pom文件是maven的配置文件,maven就是通过管理pom文件和一些核心插件来管理项目。当然我前面将maven拟人化了,其实maven是没有智力的,一切都是封装好的流程,只是maven将很多操作隐藏起来了。
3.ant的build.xml文件。build文件是ant的配置文件,ant依靠它来执行操作,与maven不同的是ant没有固定一条程序链。你想要执行什么操作以及操作之间的顺序和依赖关系,都需要手动添加到build文件中,一点一滴都要写清楚,否则ant就不会执行。
4.maven和ant区别
Maven 拥有约定,只要遵守约定,它就知道你的源代码在哪里。Maven 是声明式的。你需要做的只是创建一个 pom.xml 文件然后将源代码放到默认的目录。Maven 会帮你处理其它的事情。Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。缺点是运行许多默认目标。
而ant没有约定,项目生命周期,它是命令式的。所有操作都要手动去创建、布置。甚至连build.xml文件都需要手动创建。
总结来看:maven的功能更加简化,更加便捷。
明天的目标:开始学习任务二。
评论