mysql - MySQL 是否在 Having 上使用索引?

标签 mysql indexing aggregate-functions having

我的部分查询如下所示:

HAVING date > '2011-04-13 04:28:03'

date变量被索引了,对查询有影响吗?

EXPLAIN EXTENDED 似乎没有使用索引,但我不知道这是否只是因为我正在测试的数据库中有 4 行。

我的查询:

SELECT AVG(slen) FROM
(
SELECT date, COUNT(id) as slen
FROM table
WHERE product_id = 2830
GROUP BY id
HAVING date > '2011-04-13 04:28:02'
) as T

有几行具有不同的日期值。我想选择日期 > '2011-04-13 04:28:02' 的 ID 组。然后我想要属于一个组的平均行数,没有日期条件

顺便说一下,查询还不能正常工作。

我的另一个问题是日期 > '2011-04-13 04:28:02' 是否会使用我的日期列索引。

来自这个数据集:

sid             datelast                product_id
782240551706    2011-04-13 00:51:52     2830
782240551706    2011-04-13 04:05:48     2830
782240551706    2011-04-13 04:28:03     2830
111111111111    2011-04-13 00:50:30     2830

期望的结果:

应选择 id 为 782240551706 的组,平均值应为 3。

以下查询会产生所需的结果:

SELECT AVG(slen) FROM
(
SELECT date, COUNT(id) as slen
FROM table
WHERE product_id = 2830
GROUP BY id
HAVING **max(date)** > '2011-04-13 04:28:02'
) as T

最佳答案

HAVING 与 GROUP BY 结合使用,因此它是一个派生表。我不知道如何使用索引。

关于mysql - MySQL 是否在 Having 上使用索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5657876/

相关文章:

mysql - 如何连接 3 个表的 SQL 查询

python - Pandas 时间戳索引到日期字符串列表

sql - 空结果集的聚合

sql-server - 主键、唯一键和外键约束与索引之间有什么区别?

r - dplyr::left_join 等价于 base::merge(..., all.x=TRUE) 吗?

mysql - 在 WHERE 子句中使用 mysql SUM()

php - Codeigniter 房间预订表格验证

php - 具有连接表的二维数组

mysql - SQL-Order 包含数字的字符串

java - 链表抛出 IndexOutOfBoundsException