【发布时间】:2017-09-12 09:58:05
【问题描述】:
如何根据给定的查询索引 mysql 表?
SELECT
IF(
flag IN ('A', 'B')
AND status IN ('on'),
'A',
flag
) AS customized_flag,
IF(
agent_group = 'A',
'group_1',
'group_2'
) AS group,
COUNT(*) AS total
FROM
mytable
WHERE type IN (1, 2, 3, 4, 5)
AND publish = 1
AND status IN ('on', 'deleted', 'expired',)
GROUP BY customized_flag,
agency_package_status ;
标志可以是A,B,C,D
agent_group 可以是 A,B,C,D
类型是任意整数
我的示例表数据如下所示
【问题讨论】:
-
您的查询无效,因为
groupif 表达式不是聚合但您使用的是GROUP BY。在我的脑海中,为WHERE子句中的列添加索引。
标签: mysql indexing query-optimization