我有一个包含 4000 万个条目的数据库,并希望使用以下WHERE
子句运行查询
...
WHERE
`POP1` IS NOT NULL
&& `VT`='ABC'
&& (`SOURCE`='HOME')
&& (`alt` RLIKE '^[AaCcGgTt]$')
&& (`ref` RLIKE '^[AaCcGgTt]$')
&& (`AA` RLIKE '^[AaCcGgTt]$')
&& (`ref` = `AA` || `alt` = `AA`)
LIMIT 10 ;
Run Code Online (Sandbox Code Playgroud)
POP1
是一个浮点列,也可以是 NULL。POP1 IS NOT NULL
应该排除大约 50% 的条目,这就是我把它放在开头的原因。所有其他术语仅略微减少数量。
其中,我设计了一个pop1_vt_source
似乎没有使用的索引,而使用了vt
第一列的索引。解释输出:
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
| 1 | SIMPLE | myTab …
Run Code Online (Sandbox Code Playgroud)