一、分页
1、为什么需要分页:
随着表数据量的增加,我们客户端数据的展示不可能一次性的把所有数据全部展示出来,即使全部展示,数据库把所有数据查询出来的也需要
很长时间甚至造成数据库崩溃,因此,我们只能一次查询出来多少条即可,这就是分页查询。
2、分页种类
(1)物理分页:在数据库执行查询时(实现分页查询)查询需要的数据----依赖数据库SQL语句,属于后台分页;
优缺点:速度快,但是会频繁访问数据库。
(2)逻辑分页:先查询所有数据到内存,再从内存截取需要的数据---采用程序内部逻辑,属于前台分页;
优缺点:和数据库交换一次,但是会导致浏览器卡顿,速度变慢。
(1)MySQL分页
MySQL数据库分页查询时,使用关键字 limit 。
limit 语法:
select ... from 表 表别名 limit 开始记录索引,记录条数;
# limit 语法:从第0条开始查询10条记录
# select ... limit from 表 表别名 limit 0,10 ;
# 使用分页,每页显示5条
#查询第一页,前五条
select * from emp limit 0,5;
#查询第二页,第六条到第十条
select * from emp limit 5,5;
#查询第三页,第11条到第15条
select * from emp limit 10,5;
#查询第四页,第16条到第20条
select * from emp limit 15,5;
# 分页计算公式
#page_num,page_size 都是程序传进来的参数。
select * from emp limit (page_num-1) * page_size,page_size;
二、视图
视图:建立在 表 | 结果集 | 视图 上的虚拟表,有以下作用:
- 简化:select 查询语句
- 重用:再次利用保存的视图
- 隐藏:内部细节
- 区分:相同数据不同查询
不是所有的用户都有创建视图的权限,需要授权。
(1)创建视图
语法:
creat or replace view 视图名 as select 语句;
create or replace view emp_first_page_view as select * from emp limit 0,5;
#再次利用
select * from emp_first_page_view; # 可以使用创建的视图
(2)删除视图
删除视图不会对原始表数据有任何影响。
语法:
drop view 视图名;
三、索引
索引是数据库对象之一,用于加快数据的检索,类似于书籍的索引。在数据库中,索引可以减小数据库程序查询结果时候所要读取的
数据数量,类似于在书籍中利用索引可以不用翻阅整本书即可找到想要的信息。
语法:
#建立索引
create 索引类型 index 索引名 on 表名 (字段列表)
# 丢弃
drop index 索引名 on 表名
索引:提高查询速度的一种手段--->目录
- 唯一性,较好字段适合建立索引
- 大数据量才有比较好的效果
- 主键 | 唯一 :唯一索引
#创建索引
create unique index index_dname on dept(dname);
select * from dept;
select dname from dept;
#删除索引
drop index index_dname on dept;
(1)explain
EXPLAIN 查询sql执行方式
# EXPLAIN 查询sql执行方式
/*
使用* 匹配 不会使用索引
使用有索引的字段,索引自动生效
*/
#没有索引查询,表中有多少条记录,就先全表扫描,然后在查询到想要的数据。
EXPLAIN
select * from dept;
# 使用索引查询,表中数据哪怕一万条,根据索引定位到想要的数据。
EXPLAIN
select dname from dept;
因为前边给dname创建了索引,所以查询的时候直接就是按照索引来查询,表中数据哪怕一万条,根据索引定位到想要的数据,
如果没有建立索引,那么就是type = ALL,先全表扫描,然后在查询到想要的数据,这就是有索引和没索引的区别。