相关疑难解决方法(0)

SQL通配符搜索 - 效率?

最近在使用LIKE和通配符搜索MS SQL数据库的最有效方法上进行了辩论.我们使用的比较%abc%,%abcabc%.有人说你应该在学期末(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

14
推荐指数
1
解决办法
2万
查看次数

如何优化/重构TSQL"LIKE"子句?

我有一张117000左右的记录表.我需要执行搜索,检查给定字符串模式的3个单独字段.

我的where子句如下:

field1 LIKE '%' + @DESC + '%'
OR field2 LIKE '%' + @DESC + '%'
OR field3 LIKE '%' + @DESC + '%'
Run Code Online (Sandbox Code Playgroud)

无论输入如何,这似乎需要大约24秒......

有一个更好的方法吗?小于10(或5!)秒将更加可取.

谢谢你的帮助.

sql t-sql sql-server optimization sql-like

10
推荐指数
1
解决办法
2万
查看次数

SQL正则表达式查找不以特定单词开头的字符串

我正在 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 等),所以我请求您让我知道如何调整正则表达式。

提前致谢!

regex sql-server

3
推荐指数
1
解决办法
7901
查看次数