最近在使用LIKE和通配符搜索MS SQL数据库的最有效方法上进行了辩论.我们使用的比较%abc%,%abc和abc%.有人说你应该在学期末(abc%)结束时使用通配符.因此,根据他们的说法,如果我们想要找到以"abc"结尾的东西,那么使用`reverse(column)LIKE reverse('%abc')是最有效的.
我使用SQL Server 2008(R2)设置了一个测试来比较以下每个语句:
select * from CLMASTER where ADDRESS like '%STREET'
select * from CLMASTER where ADDRESS like '%STREET%'
select * from CLMASTER where ADDRESS like reverse('TEERTS%')
select * from CLMASTER where reverse(ADDRESS) like reverse('%STREET')
Run Code Online (Sandbox Code Playgroud)
CLMASTER拥有大约500,000条记录,大约有7,400个地址以"Street"结尾,大约8,500个地址包含"Street",但不一定在最后.每次测试运行花了2秒钟,他们都返回了相同数量的行,除了%STREET%,它发现额外的900左右的结果,因为它拾取了最后有公寓号的地址.
由于SQL Server测试没有显示执行时间的任何差异,我移动到PHP,我使用以下代码,切换每个语句,快速运行多个测试:
<?php
require_once("config.php");
$connection = odbc_connect( $connection_string, $U, $P );
for ($i = 0; $i < 500; $i++) {
$m_time = explode(" ",microtime());
$m_time = $m_time[0] + $m_time[1]; …Run Code Online (Sandbox Code Playgroud) sql sql-server query-optimization processing-efficiency sql-server-2008
我有一张117000左右的记录表.我需要执行搜索,检查给定字符串模式的3个单独字段.
我的where子句如下:
field1 LIKE '%' + @DESC + '%'
OR field2 LIKE '%' + @DESC + '%'
OR field3 LIKE '%' + @DESC + '%'
Run Code Online (Sandbox Code Playgroud)
无论输入如何,这似乎需要大约24秒......
有一个更好的方法吗?小于10(或5!)秒将更加可取.
谢谢你的帮助.
我正在 MSSQL 中寻找正则表达式来省略以特定单词“开头”的值。例如,表达式应忽略以“Mr”开头的任何字符串,但提取以“MMR”开头或“Mr”位于字符串中间某处的任何字符串:
样本数据:
应省略:“ Mr Murphy Barrera 7329 Neque Road Zierikzee M15 6SF Tonga”
不应省略:“Murphy Barrera 7329 Neque Road Zierikzee M15 6SF Mr Tonga”
我使用过LIKE '[^Mr.]',但忽略了以 M OR R 开头的所有内容,所以它没有达到目的。
我有一个需要检查的单词列表(例如 Ms、Dr、St 等),所以我请求您让我知道如何调整正则表达式。
提前致谢!