【发布时间】:2016-02-13 18:55:00
【问题描述】:
我正在使用 MySql 中的一个表,该表有一个名为“serial”的 int 索引列。该表有大约 200 万行。
如果我以这种方式对该列应用 select 语句:
SELECT serial FROM Table WHERE Serial=12345
这会在
但是,如果我在同一个表中使用 SELECT * 查询,则此查询需要 大约 78 秒...
我知道将索引应用于表中的所有列没有用,如果我需要从特定序列中获取所有列,如何优化/最小化查询响应时间?
SELECT * FROM Table WHERE serial= 12345
EXPLAIN 的结果:
选择序列号:
1 SIMPLE tableName index idx_tablename_serial 5 6686620 使用索引
选择 *:
1 SIMPLE agsensepivotreadings ALL(空值)6686620
请,任何建议或指导将不胜感激。
【问题讨论】:
-
很少需要选择表中的每个字段。
-
假设有 20 列,我需要返回 18 列,这些是每 5 分钟从设备读取的属性。
-
你能发布两个查询的解释结果吗?
-
第一个查询很快,因为根本不需要读取表本身,因为所需的全部信息都在索引中。至于第二个查询:有多少条记录共用一个序号? (最小值、最大值、平均值、典型值。)
-
这张表有可能是一个视图吗?
标签: mysql sql database performance indexing