我有SQL数据库表,我试图返回列以8个特定数字开头的行。例如,我们可以调用列#34;数字",它总是有11个数字。我期待返回前8行是" 24681234"的行。我试过使用" LIKE"命令,但考虑到数据库的大小,它需要FOREVER运行。这是我目前使用的命令:
SELECT TOP 1 CREATE_TIME, EMAIL, FIRST_NAME, LAST_NAME, NUMBER, SN
FROM MY_TABLE WHERE NUMBER LIKE '35722806%' OR NUMBER LIKE '35981106%'
是否有更快捷的方法来搜索此信息?
答案 0 :(得分:0)
为您提供几种可能的选择: -
SELECT TOP 1 CREATE_TIME, EMAIL, FIRST_NAME, LAST_NAME, NUMBER, SN FROM MY_TABLE WHERE LEFT(NUMBER,8) ='35722806' OR LEFT(IMEI,8) ='35981106'
或
SELECT TOP 1 CREATE_TIME, EMAIL, FIRST_NAME, LAST_NAME, NUMBER, SN FROM MY_TABLE WHERE SUBSTRING(NUMBER,0,9) ='35722806' OR SUBSTRING(IMEI,0,9) = '35981106'
也许在列上创建索引也会有所帮助。
答案 1 :(得分:0)
假设列'number'是数字数据类型,你可以
SELECT TOP 1 CREATE_TIME, EMAIL, FIRST_NAME, LAST_NAME, NUMBER, SN
FROM MY_TABLE
WHERE
NUMBER BETWEEN 35722806000 AND 35722806999
OR IMEI BEWEEN 35981106000 AND 35981106999
在此字段上添加索引将有助于选择,但许多插入的性能是折衷的。