Sql server SQL查询,其中列中的名称以某个字母开头;澄清
我有一个运行进程的vb.net应用程序。为了加快速度,我将其分为几个线程,该过程要求员工分组,如下所示Sql server SQL查询,其中列中的名称以某个字母开头;澄清,sql-server,vb.net,Sql Server,Vb.net,我有一个运行进程的vb.net应用程序。为了加快速度,我将其分为几个线程,该过程要求员工分组,如下所示 SELECT * FROM Employ WHERE Name like '[A-C]%' ORDER BY RDate DESC 大多数情况下,我有“A-C”之类的组,但碰巧“Ms”是最大的组,所以我让他们自己的组“M-M”,即使这还不够,他们的线程也需要很长时间才能完成。所以我想分成两组,像‘Ma-Mm’和‘Mn-Mz’ 是否只是将上述查询更改为这些字母?比如: SELECT * FR
SELECT * FROM Employ WHERE Name like '[A-C]%' ORDER BY RDate DESC
大多数情况下,我有“A-C”之类的组,但碰巧“Ms”是最大的组,所以我让他们自己的组“M-M”,即使这还不够,他们的线程也需要很长时间才能完成。所以我想分成两组,像‘Ma-Mm’和‘Mn-Mz’
是否只是将上述查询更改为这些字母?比如:
SELECT * FROM Employ WHERE Name like '[Ma-Mm]%' ORDER BY RDate DESC
SELECT * FROM Employ WHERE Name like '[Mn-Mz]%' ORDER BY RDate DESC
另外,如果名称列被编入索引,这是编写该查询的最佳方式吗
编辑:我正在使用Ms SQL Server如果您正在使用SQL Server,则可以执行以下操作:
WHERE Name like 'M[a-m]%'
但是,生成范围(如我的“否”)更难表示。您可以随时执行以下操作:
WHERE name >= 'Ma' and name < 'Mn'
其中name>='Ma'和name<'Mn'
还有。这适用于更复杂的范围。我不认为模式匹配是这样的。您需要在这个级别下订单吗?这是一个潜在的瓶颈。你最好的选择可能是使用全文搜索索引。(我假设您使用的是Sql Server)是的,我测试过,模式匹配肯定不是这样工作的。至少在SQL Server中是这样。谢谢Jacob,我检查了order by,整个过程的执行时间没有明显的差异,无论是否有。我使用了这个“像'M[a-M]%”这样的名称,它通过了计数测试,因此选择了所有相关列,非常感谢您的帮助。