优化这个特定查询的最佳方法是什么?
例如,我有10位数的电话号码,我想查询这两个号码中的任何一个。
。
优先:使用SUBSTRING
SELECT *
FROM table
WHERE SUBSTRING(telephone, 1,6)数据:
id | telephone
1 | 1234560001
2 | 1234560002 第二步:将列分块成块,
SELECT *
FROM table
WHERE pt1 = 123 AND pt2 = 456
SELECT *
FROM table
WHERE pt1 = 123 OR pt2 = 456数据:
id | pt1 | pt2 | pt3
1 | 123 | 456 | 0001
2 | 123 | 456 | 0002 哪个更好?列的超行或分块?
发布于 2016-11-26 15:57:38
如果你想要这些条件:
然后使用LIKE或IN。这两个条件是:
WHERE columnName LIKE '123456%'
WHERE columnName1 = 123 OR columnName2 = 456第一种方法可以使用columnName上的索引进行优化。第二种方法不使用当前形式的索引(但可以使用UNION/UNION ALL和更简单的WHERE子句强制使用索引。
https://stackoverflow.com/questions/40820096
复制相似问题