sql新手-使用索引加速

x8goxv8g  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(346)

我是sql数据库的新手,创建了一个包含以下列的mysql表:

MJD (FLOAT) - may be duplicate 
WAVELNTH (LONG) - one of ~10 values
EXPTIME (FLOAT)
DATAMEAN (FLOAT)
FLUX (FLOAT)

典型的条目如下:
数据库中的典型条目如下所示:

MJD 55329.017334, 
WAVELNTH 131
EXPTIME 2.9
DATAMEAN 8.06
FLUX 2.78

数据库总共有157502333个条目。
我的问题几乎是无稽之谈

SELECT (MJD, FLUX) FROM t 
WHERE (MJD > value1 and MJD < value2 and WAVELNTH=value3)

现在执行一个查询大约需要一分钟。我对索引非常陌生,所以我希望在a)如何最好地添加索引和b)如何在查询中使用该索引方面得到一些帮助。

laawzig2

laawzig21#

我建议使用以下索引:

CREATE INDEX idx ON yourTable (WAVELNTH, MJD, FLUX);

前两列 WAVELNTH 以及 MJD ,出现在 WHERE 子句,并可能用于限制查询中需要考虑的记录数。如果没有更多的信息,就不清楚订单应该是什么。因此,以下索引可能更好:

CREATE INDEX idx ON yourTable (MJD, WAVELNTH, FLUX);

我们之所以包括 FLUX 在索引的末尾是覆盖该列中的值。因为你的选择请求 MJD 以及 FLUX 很可能任何索引都需要这两个列,以便mysql使用索引。

相关问题