Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从SQL数据库中获取包含数字子集的行_Sql_Sql Server_Database - Fatal编程技术网

从SQL数据库中获取包含数字子集的行

从SQL数据库中获取包含数字子集的行,sql,sql-server,database,Sql,Sql Server,Database,我有一个SQL数据库表,我试图返回列以8个特定数字开头的行。例如,我们可以将列称为“numbers”,它总是有11个数字。我希望返回前8行是“24681234”的行。我曾尝试使用“LIKE”命令,但考虑到数据库的大小,它需要永远运行。下面是我目前使用的命令: SELECT TOP 1 CREATE_TIME, EMAIL, FIRST_NAME, LAST_NAME, NUMBER, SN FROM MY_TABLE WHERE NUMBER LIKE '35722806%' OR NUMBER

我有一个SQL数据库表,我试图返回列以8个特定数字开头的行。例如,我们可以将列称为“numbers”,它总是有11个数字。我希望返回前8行是“24681234”的行。我曾尝试使用“LIKE”命令,但考虑到数据库的大小,它需要永远运行。下面是我目前使用的命令:

SELECT TOP 1 CREATE_TIME, EMAIL, FIRST_NAME, LAST_NAME, NUMBER, SN
FROM MY_TABLE WHERE NUMBER LIKE '35722806%' OR NUMBER LIKE '35981106%' 

有没有更快的方法来搜索此信息

您有几个可能的选择:-

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'


也许在列上创建索引也会有所帮助。

假设列“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 

在此字段上建立索引将有助于选择,但许多插入的性能是一种折衷。

您是否考虑过在
NUMBER
IMEI
上创建索引?表有多大(行计数和大小)?列“数字”是定义为数字数据类型的列还是字符串数据类型?@ZoffDino我正在尝试获取计数,但考虑到它已经运行计数查询几分钟,我假设它很大。我猜我必须对此进行索引,然后运行查询以加快速度。使用
EXEC sp\u spaceused'MY\u TABLE'
快速count@ZoffDino谢谢大约有14000000行。。。所以是的,相当大。索引它需要多长时间?这些查询不是。因此,如果相关列上有索引,则原始查询的性能可能会更好。
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