Mysql

分页

Limit

limit [ offset ],[ count ]
offset: 数据偏移量。从第一条开始offset =0 , 从第10条开始offset = 9
count : 查询出个记录条数。

对应分页方法:pageIndex(页码),pageCount(页面大小)
limit (pageIndex - 1)*pageCount , pageCount

子查询分页

当数据很多的时候,用limit分页,偏移量很大,查询速度会降低。
此时,我们可以用子查询来提高分页效率,比如:

SELECT * FROM articles WHERE  id >=  
 (SELECT id FROM articles  WHERE category_id = 123 ORDER BY id LIMIT 10000, 1) LIMIT 10  

join查询分页

SELECT * FROM `content` AS t1   
JOIN (SELECT id FROM `content` ORDER BY id desc LIMIT ".($page-1)*$pagesize.", 1) AS t2   
WHERE t1.id <= t2.id ORDER BY t1.id desc LIMIT $pagesize

效率跟子查询分页相近。

原因:因为子查询是在索引上完成的,普通查询是在数据文件上完成的,所以子查询效率速度更高。

数据库事务和特性

原子性:事务中的所有操作,要么全部完成,要么全部不完成。事务在执行中发生异常,会被回滚到之事务开始之前的状态,相当于这个事务完全没有发生一样。
一致性:在事务开启之前和完成之后,数据库的完整性约束没有被破坏。
隔离性:同一个时间段内,只能有一个事务访问数据。防止事务之间操作混淆。
持久性:事务完成后,该事务对数据库的更改会持久的保存在数据库中。

连接查询

left join : 左连接 。返回左表所有的字段,根据on后的字段匹配规则,如果左边中字段没有匹配到右边的字段,则相关查询出的右表的字段为null值 。

right join :右连接。返回右表所有字段, 根据on后的字段匹配规则,如果右边中字段没有匹配到左边的字段,则相关查询出的左表的字段为null值 。

inner join : 内连接。只返回满足字段匹配条件的记录。

full join ; 完全连接。 返回两张表所有字段,如果没有字段之间没有匹配到,则查询出的字段为null值。

交叉连接: 返回两张表中的笛卡尔积。

数据库优化

Sql语句优化

1.不要在where中使用!= 和 < , >的操作符,否则引擎会放弃索引,而进行全表扫描。
2.不要在where中进行null 判断,否则会放弃索引,而进行全表扫描。
3.建议用exists 代替 in
4.最好用where子句代替having ,因为Having只会在检索出所有记录后才会对结果集进行过滤。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • .数据库 数据库的发展: 文件系统(使用磁盘文件来存储数据)=>第一代数据库(出现了网状模型,层次模型的数据库)=...
    小Q逛逛阅读 1,009评论 0 2
  • MySQL技术内幕:SQL编程 姜承尧 第1章 SQL编程 >> B是由MySQL创始人之一Monty分支的一个版...
    沉默剑士阅读 2,475评论 0 3
  • 1、MySQL启动和关闭(安装及配置请参照百度经验,这里不再记录。MySQL默认端口号:3306;默认数据类型格式...
    强壮de西兰花阅读 677评论 0 1
  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,055评论 0 19
  • 之前偶尔会自己画些简笔画。今天终于迈出了彩铅画的第一步。虽然多有不足。但毕竟第一次。求照拂。鼓励。水溶彩铅不好操作...
    兔纸你要飞吗阅读 297评论 0 0