求mysql+php分页统计总条数的最好方案。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求mysql+php分页统计总条数的最好方案。相关的知识,希望对你有一定的参考价值。

一般情况下分页时,要使用mysql的cout() 函数统计总条数,但我觉得这个count()函数好慢,好耗cpu,请问最好的方法是什么?

参考技术A 我的想法是这样的:如果不涉及模糊查找和很少的分类查找的话,在每次记录的时候,
每个类型分别累加条数,并保存在《记录统计表》之中。
在需要的时候直接查找所需要的统计值,而不是全盘累加!
这样就可以极大程度节省CPU的消耗。
参考技术B - -、、没有。要不然你就SELECT *
然后用mysql_num_rows来取

反正效果差不多。

mysql查询表中数据总条数的语句怎么写

java 在DAO里想查询数据库表中的数据量,做判断超过一定数量就不执行,mysql语句该怎么写
我是在DAO里用的,我之前就是用的String usercount=" select count(*) from "+tablename2(变量想查询多张表)+"";,可system.out出来的是select count(*) from asdphoneinfo(表名)。该怎么写呢?

sql查询表中数据总条:SELECT COUNT(*) FROM 表名称。

count(*)代表着数据统计的总数。

例子

本例返回 "Persons" 表中的行数:

SELECT COUNT(*) FROM Personsinfo。

返回大于 20 岁的人数:

SELECT COUNT(*) FROM Personsinfo WHERE Age>20

根据筛选条件来统计总数。

拓展资料

SQL

结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

参考资料:百度百科——SQL



参考技术A

TABLE 语句

具体语法:TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]
其实从语法上看,可以排序,也可以过滤记录集,不过比较简单,没有 SELECT 那么强大。

示例 1

简单的建一张很小的表 y1,记录数为 10 条。表 t1,插入 10 条记录

    mysql-(ytt/3305)->create table t1 (r1 int,r2 int);

    Query OK, 0 rows affected (0.02 sec)

    mysql-(ytt/3305)->insert into t1

    with recursive aa(a,b) as (

    select 1,1

    union all

    select a+1,ceil(rand()*20) from aa where a < 10

    ) select * from aa;

    Query OK, 10 rows affected (0.00 sec)

    Records: 10  Duplicates: 0  Warnings: 0

    简单全表扫描mysql-(ytt/3305)->select * from t1;+------+------+| r1   | r2   |+------+------+|    1 |    1 ||    2 |    9 ||    3 |    9 ||    4 |   17 ||    5 |   17 ||    6 |   16 ||    7 |    6 ||    8 |    1 ||    9 |   10 ||   10 |    3 |+------+------+10 rows in set (0.00 sec)
    TABLE 结果mysql-(ytt/3305)->table t1;+------+------+| r1   | r2   |+------+------+|    1 |    1 ||    2 |    9 ||    3 |    9 ||    4 |   17 ||    5 |   17 ||    6 |   16 ||    7 |    6 ||    8 |    1 ||    9 |   10 ||   10 |    3 |+------+------+10 rows in set (0.00 sec)
    看下 table 的执行计划mysql-(ytt/3305)->explain table t1 order by r1 limit 2\\G*************************** 1. row ***************************           id: 1  select_type: SIMPLE        table: t1   partitions: NULL         type: ALLpossible_keys: NULL          key: NULL      key_len: NULL          ref: NULL         rows: 10     filtered: 100.00        Extra: Using filesort1 row in set, 1 warning (0.00 sec)
    其实可以看到 TABLE 内部被 MySQL 转换为 SELECT 了。mysql-(ytt/3305)->show warnings\\G*************************** 1. row ***************************  Level: Note   Code: 1003Message: /* select#1 */ select `ytt`.`t1`.`r1` AS `r1`,`ytt`.`t1`.`r2` AS `r2` from `ytt`.`t1` order by `ytt`.`t1`.`r1` limit 21 row in set (0.00 sec)
    那其实从上面简单的例子可以看到 TABLE 在内部被转成了普通的 SELECT 来处理。示例 2应用于子查询里的子表。这里要注意,内表的字段数量必须和外表过滤的字段数量一致。克隆表 t1 结构mysql-(ytt/3305)->create table t2 like t1;Query OK, 0 rows affected (0.02 sec)
    克隆表 t1 数据mysql-(ytt/3305)->insert into t2 table t1;Query OK, 10 rows affected (0.00 sec)Records: 10  Duplicates: 0  Warnings: 0
    table t1 被当做内表,表 t1 有两个字段,必须同时满足 t2 检索时过滤的字段也是两个。mysql-(ytt/3305)->select * from t2 where (r1,r2) in (table t1);+------+------+| r1   | r2   |+------+------+|    1 |    1 ||    2 |    9 ||    3 |    9 ||    4 |   17 ||    5 |   17 ||    6 |   16 ||    7 |    6 ||    8 |    1 ||    9 |   10 ||   10 |    3 |+------+------+10 rows in set (0.00 sec)
    注意:这里如果过滤的字段数量和子表数量不一致,则会报错。
参考技术B COUNT(*) 函数返回表中的记录数:
SELECT COUNT(*) FROM table_name
相信你会了吧
参考技术C mysql查询表中数据总条数:
select count(*) form table_name
参考技术D 固定的表吗?
那select count(*) from 表 就可以了啊追问

可以看一下么,我对问题进行了补充

以上是关于求mysql+php分页统计总条数的最好方案。的主要内容,如果未能解决你的问题,请参考以下文章

php简单分页

php 分页类(未实战)

PHP通用分页类

分页过滤SQL求总条数SQL正则

php分页代码

pagehelper总条数最大7设置