我在桌面上有一个sql查询,其中mobileno column mobileno包含" - "所以在where子句中我需要使用replace(mobileno," - ","")函数进行比较。
使用explain函数,我检查了如果在索引列上使用函数,它不会使用索引。那么我如何强制sql使用索引或任何其他替代方法来提高我的查询性能。
答案 0 :(得分:0)
您确定因为REPLACE功能而未使用索引吗?也许没有足够的行来使用索引值得。或者其他一些原因。
我运行了4256行测试,令我惊讶的是,使用了索引,即使使用REPLACE:
EXPLAIN EXTENDED SELECT mobileno FROM test WHERE REPLACE(mobileno, '(', '') = '123) 456-789'
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE test index NULL mobileno 768 NULL 4256 100 "Using where; Using index"