首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过SUBSTRING或块列优化SQL

问通过SUBSTRING或块列优化SQL
EN

Stack Overflow用户
提问于 2016-11-26 15:50:13
回答 1查看 40关注 0票数 0

优化这个特定查询的最佳方法是什么?

例如,我有10位数的电话号码,我想查询这两个号码中的任何一个。

  1. columnName从123456开始
  2. 其中columnName1 = 123或columnName2 = 456

。

优先:使用SUBSTRING

代码语言:javascript
复制
SELECT *
FROM table
WHERE SUBSTRING(telephone, 1,6)

数据:

代码语言:javascript
复制
  id  |  telephone
   1  |  1234560001 
   2  |  1234560002 

第二步:将列分块成块,

代码语言:javascript
复制
SELECT *
FROM table
WHERE pt1 = 123 AND pt2 = 456

SELECT *
FROM table
WHERE pt1 = 123 OR pt2 = 456

数据:

代码语言:javascript
复制
  id  |   pt1 | pt2 | pt3
   1  |  123 | 456 | 0001 
   2  |  123 | 456 | 0002 

哪个更好?列的超行或分块?

EN

回答 1

Stack Overflow用户

发布于 2016-11-26 15:57:38

如果你想要这些条件:

  1. columnName从123456开始
  2. 其中columnName1 = 123或columnName2 = 456

然后使用LIKE或IN。这两个条件是:

代码语言:javascript
复制
WHERE columnName LIKE '123456%'
WHERE columnName1 = 123 OR columnName2 = 456

第一种方法可以使用columnName上的索引进行优化。第二种方法不使用当前形式的索引(但可以使用UNION/UNION ALL和更简单的WHERE子句强制使用索引。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40820096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档