我们正常情况在进行数据分页时一般会通过count查询总条数,limit查询当前页数据,完成数据数据分页。今天学习的是如何一次性查询完成,这是从wordpress中学习到的。先看看下面的SQL:
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts LEFT JOIN wp_term_relationships ON ( wp_posts.ID = wp_term_relationships.object_id ) WHERE 1 = 1 AND ( wp_term_relationships.term_taxonomy_id IN ( 2 ) ) AND (( wp_posts.post_type = 'post' AND ( wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private' ))) GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10; SELECT FOUND_ROWS();
分页输出数据:
678458 678457 678456 678455 678454 678453 678452 678451 678450 678449
查询条数输出数据:67w数据
678385
该查询语句从wp_posts表中选取了wp_posts.ID这一列,并通过LEFT JOIN与wp_term_relationships表进行关联。查询条件包括:term_taxonomy_id为2、post_type为'post'且post_status为'publish'或'private'。GROUP BY子句将结果按照wp_posts.ID进行分组,ORDER BY子句按照wp_posts.post_date降序排序。LIMIT子句指定了返回结果的偏移量0和数量10。
注意,通过使用SQL_CALC_FOUND_ROWS,该查询语句会同时计算出满足条件的记录总数,可以通过执行SELECT FOUND_ROWS()获取这个总记录数。
我们从一个结果集中查询信息一般都是select * from (select...),每次都要编写from (select...)非常麻烦,于是我们将结果集保存起来,这就是视图的便利。创建视图的命令为:create view &nb...
触发器是一种特殊的事务,可以监听到Mysql的(insert/update/delete)的操作并触发相应的(insert/update/delete)操作. 触发器的创建主要有4个要素:(1).监听地点(...
(1).首先我们需要了解limit分页的工作流程demo: SELECT * FROM table LIMIT 10000,5 通常我们会认为以上SQL会从10000条后面取5条,正确的是取出10005条,然后再抛弃前...
1.很多人认为count查询非常快,但是在加上筛选条件那就是未必的了!测试:user表中4000w数据(1).SELECT count(*) from user; 用时0.00s (2).SELECT...
概述: 目前我们的表设计,最高级别的范式是6NF,对于PHP程序员而言,我们的表满足3NF即可(范式即规范)【一】1NF (1).所谓1NF,就是指标的属性具有原子性,即表的列不能再分割,不能分割意思是字段本身的含义(例如address字段不能再分割)...
海量表,数据量较大,并且每个字段的值具有唯一性。如果你创建的海量表只是数据多,索引是毫无意义的。构建海量时我们要使用存储过程。学习自韩顺平(1).创建一个测试数据库create database testdb;set names gbk;use testdb(2).创建dep...