小编Ima*_*ang的帖子

MySQL解释中过滤是什么意思?

MySQL 文档中所述

过滤的列指示将由表条件过滤的表行的估计百分比。也就是说,rows 显示估计的检查行数,而 rows × filters / 100 显示将与先前表连接的行数。在 MySQL 5.7.3 之前,如果使用 EXPLAIN EXTENDED,则会显示此列。从 MySQL 5.7.3 开始,默认启用扩展输出,不需要 EXTENDED 关键字。

我还是不明白。这里的“过滤”是什么意思?我们可以从这个专栏中得到什么信息?

例如,当我开始查询时,有些查询会显示 100,而有些查询会显示 18 或任何低于 100 的值。

+-------------+-------+--------+---------+---------+------+----------+
| select_type | table | type   | key     | key_len | rows | filtered |
+-------------+-------+--------+---------+---------+------+----------+
| PRIMARY     | a     | range  | search  | 4       |  174 |   18.00  | <--
| PRIMARY     | b     | eq_ref | PRIMARY | 4       |    1 |   100.00 |
| PRIMARY     | …
Run Code Online (Sandbox Code Playgroud)

mysql innodb mysql-5.7

36
推荐指数
1
解决办法
3万
查看次数

如何在并发插入数据上使用 UUID v4 和创建时间进行分页?

语境:

出于好奇,我正在为我的应用程序进行负载测试。然后结果发生了很多并发插入。

在创建端点上进行负载测试后,我尝试在 Fetch 端点上进行负载测试,包括测试分页。对于分页,我组合了两列:id(带有 UUID v4 的 PK)和created_time。另外,我还添加了索引以加快排序速度。我从这里遵循这些解决方案。

问题:

由于数据是同时插入的,因此有几行具有相同的created_time,在我的例子中,同一时间戳最多有100(行)。

这是我的表架构,一个示例

BEGIN;

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

DROP TABLE IF EXISTS "payment_with_uuid";

CREATE TABLE "payment_with_uuid" (
 id VARCHAR(255) PRIMARY KEY NOT NULL DEFAULT (uuid_generate_v4()),
 amount integer NULL,
 name varchar(255) default NULL,
 created_time TIMESTAMPTZ NOT NULL DEFAULT (now() AT TIME ZONE 'utc')
);

CREATE INDEX idx_payment_pagination ON payment_with_uuid (created_time, id);

COMMIT;
Run Code Online (Sandbox Code Playgroud)

这是我的查询,

SELECT  * from payment_with_uuid ORDER BY  created_time DESC, id DESC LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

它将返回 10 行付款,假设数据如下所示,并假设时间戳在第 …

postgresql pagination

4
推荐指数
1
解决办法
6234
查看次数

标签 统计

innodb ×1

mysql ×1

mysql-5.7 ×1

pagination ×1

postgresql ×1