【问题标题】:SQL query to get row count获取行数的 SQL 查询
【发布时间】:2014-04-25 09:56:08
【问题描述】:

我在我的 PHP 中有一个要搜索字符串的查询:

select * from feed1 where PNAME like '%clothes%' limit 5;

我还想获得 PNAME 的计数,例如我正在使用单独搜索查询的布料:

$qry=mysqli_query(select * from feed1 where PNAME like '%clothes%');
$rows=mysqli_num_rows($qry);

行查询加载页面的时间过长。有什么方法可以从一个查询中获取总行数和最多 5 个产品的限制?从而减少加载时间。

+-------+------------+----------+--------------+-------------+-----------+------
-------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardi
nality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+----------+--------------+-------------+-----------+------
-------+----------+--------+------+------------+---------+---------------+
| xml   |          0 | PRIMARY  |            1 | BOSID       | A         |
  7233 |     NULL | NULL   |      | BTREE      |         |               |
+-------+------------+----------+--------------+-------------+-----------+------
-------+----------+--------+------+------------+---------+---------------+
1 row in set (0.00 sec)

【问题讨论】:

  • run show indexes from feed1 这会告诉你为什么它慢。
  • 我运行了上面的查询先生。但不知道如何检查参数。请指导
  • 你需要直接在 mysql 上运行它,它会显示表的索引。
  • 我运行它并获得了一些数据,但无法理解
  • 复制问题中的内容。

标签: php sql


【解决方案1】:

你不能通过一个查询来做到这一点,但要获取计数,请使用 COUNT(*) 而不是获取所有数据。

获取计数:

select count(*) from feed1 where PNAME like '%clothes%'

然后获得前 5 个:

select * from feed1 where PNAME like '%clothes%' limit 5

应该至少有两个分页查询。

【讨论】:

  • 使用第一个查询进行计数将花费更少的时间,是吗?先生?
  • @user3564442 至少比取出所有数据花费的时间更少,您可以检查您的数据库索引。
  • 仍然需要 4-5 秒。先生如何检查索引
猜你喜欢
  • 2018-11-09
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多