【发布时间】:2015-02-12 21:29:19
【问题描述】:
列被索引和全文。为什么“OR”会增加 5-8 秒?
SELECT * FROM exampleTable WHERE MATCH(someColumn) AGAINST('+testing123*' IN BOOLEAN MODE)
// returns in .05 seconds
SELECT * FROM exampleTable WHERE someColumn LIKE 'testing123%'
// returns in .003 seconds
SELECT * FROM exampleTable WHERE (MATCH(someColumn) AGAINST('+testing123*' IN BOOLEAN MODE) OR MATCH(someColumn) AGAINST('+testing123*' IN BOOLEAN MODE))
// returns in 5-8 seconds; yes, they are same MATCH statement...
SELECT * FROM exampleTable WHERE (MATCH(someColumn) AGAINST('+testing123*' IN BOOLEAN MODE)OR someOtherIndexedColumn LIKE 'testing123%'
// returns in 5-8 seconds; ***** different columns this time*******
我觉得很奇怪,当它是相同的语句时,MySQL 如此缓慢。这就像导致语句 "SELECT * FROM tableName WHERE 1 OR 1 " 为 5 秒。列是否相同或不同对速度没有影响。
【问题讨论】:
-
哪个版本的 MySQL 服务器?
-
Ver 14.14 Distrib 5.6.22,适用于使用 EditLine 包装器的 Linux (x86_64)
标签: mysql performance full-text-search sql-like full-text-indexing