MySQL(版本:5.7.21-ndb-7.5.9-cluster)使用全表扫描进行简单的选择查询

时间:2018-04-05 08:30:29

标签: mysql query-optimization

目前,我的查询需要8秒钟才能完成。

查询是:

SELECT CI FROM MyTable WHERE CI = 9787988;

和索引也可以像:

CREATE INDEX nidx_MyTable_CI ON MyTable(CI) USING BTREE;

NDB MyTable拥有620万条记录。 CI不是主键并且具有空值。 MyTable有12列,其VARCHAR / INT / DATE数据类型。 ANALYZE TABLE执行时没有任何问题。 FORCE INDEX也会返回全表扫描,并且需要8秒才能完成。

Work bench

如何优化查询以更快地执行?

1 个答案:

答案 0 :(得分:0)

如果CI的数据类型为VARCHAR,则引用9787988。否则,它必须将每个字符串CI转换为一个数字来进行测试,因此进行表扫描。

(当您提供SHOW CREATE TABLE时,您可能会得到更快的答案。)