我在ado.net实体框架中的实体中遇到了一些问题.基本上我正在做的是:
var results = (from c in companies
where c.Name.StartsWith(letter)
select c);
Run Code Online (Sandbox Code Playgroud)
并将其转换为SQL,如:
WHERE (CAST(CHARINDEX(@p, [Extent1].[Name]) AS int)) = 1
Run Code Online (Sandbox Code Playgroud)
这很好,但我的表有数百万的记录,所以这运行非常慢.我需要它生成的是:
WHERE Name LIKE @p + '%'
Run Code Online (Sandbox Code Playgroud)
我搜索高低,除了使用存储过程或使用实体sql之外无法找到任何解决方案...
有没有办法通过linq做到这一点?可能通过某种方式将linq扩展到实体linq提供程序,或以某种方式拦截命令树或生成的查询?
我一直在阅读,发现使用LIKE导致查询大幅减速.
一位同事建议我们使用
Select Name
From mytable
a.Name IN (SELECT Name
FROM mytable
WHERE Name LIKE '%' + ISNULL(@Name, N'') + '%'
GROUP BY Name)
Run Code Online (Sandbox Code Playgroud)
替代
Select Name
From mytable
a.Name LIKE '%' + ISNULL(@Name, N'') + '%'
Run Code Online (Sandbox Code Playgroud)
现在我不是SQL专家,我不太了解这些陈述的内部运作.这是一个更好的选择,值得为每个类似的声明键入一些额外的字符吗?是否有更好的(更容易打字)替代方案?
我有一张传记数据表,我需要做一个查询,选择在他们的生物中有"死"字并且死亡日期为NULL的人.这不起作用:
SELECT * FROM people
WHERE bio LIKE '%died%'
AND death_date IS NULL
Run Code Online (Sandbox Code Playgroud)
选择death_date为null的每个人,但也选择在他们的bio中没有"death"字样的人.我可以在一个查询中执行此操作吗?
我想'wildcard %'在MySQL中匹配这个.
我尝试使用逃生\%,它无法正常工作.
我有一个街道名称列表,我想选择以"Al"开头的所有内容.在我的mysql中,我会做类似的事情
SELECT * FROM streets WHERE "street_name" LIKE "Al%"
Run Code Online (Sandbox Code Playgroud)
使用php的mongodb怎么样?
我有一个简单的查询,但遇到了LIKE在VBA中使用的问题.我在VBA中的SQL字符串是:
stsql1 = "Select Top 25 data.* from data where data.Description Like ('*') "
Run Code Online (Sandbox Code Playgroud)
当我在我的VBA代码中运行此sql字符串时,我没有返回任何记录,但是如果我将相同的字符串复制/粘贴到MS Access中的SQL视图中的查询中,则查询将返回我期望的值.在VBA中使用"Like"语法有诀窍吗?
如果有帮助,我可以提供额外的代码和数据库的小版本.
我在一个语句中使用了一个LIKE而不是LIKE的named_scope.与使用REGEXP相比,这在执行方面更快吗?
named_scope :order_search, :order => "name LIKE '%urgent%' AND name NOT LIKE '%not urgent%' DESC, created_at DESC"
Run Code Online (Sandbox Code Playgroud) 我有一个表(MySQL 5.1,InnoDB),大约有3M行,其中98%只包含一个单词.如果我正在使用查询LIKE %searchterm%,那就太慢了.
由于SELECT只有这个表的查询,我正在考虑将其转换为MyISAM(因为InnoDB还没有,或者只支持5.6+版本,支持FULLTEXT).
但是,我想知道这是否会真正加快查询速度,因为据我所知,FULLTEXT索引是一个包含分词的表("Hello sunny day" - >"hello","sunny","一天"),所以如果每列只有一个单词,那会有意义吗?
如果我在这个文本列上放一个普通的索引,它会加快查询吗?
预先感谢您的帮助!
我想在查询中使用很多LIKE条件.我找不到实用的解决方案.我试过CONTAINS,但它不起作用.
而不是使用这个
where EIO.DigiAddress like '%abc@abc.com%'
or EIO.DigiAddress like '%def@def.com%'
or EIO.DigiAddress like '%ghi@ghi.com%'
Run Code Online (Sandbox Code Playgroud)
我想用这样的东西:
CONTAINS(EIO.DigiAddress,'%abc@abc.com%', '%def@def.com%', '%ghi@ghi.com%')
Run Code Online (Sandbox Code Playgroud)
要么
EIO.DigiAddress IN ('%abc@abc.com%', '%def@def.com%', '%ghi@ghi.com%')
Run Code Online (Sandbox Code Playgroud) 我正在尝试:
mRealm
.where(Contact.class)
.equalTo(Contact.NAME, text, Case.INSENSITIVE)
.findAllSortedAsync(Contact.NAME, Sort.ASCENDING);
Run Code Online (Sandbox Code Playgroud)
结果:未达到预期结果.
mRealm
.where(Contact.class)
.contains(Contact.NAME, text, Case.INSENSITIVE)
.findAllSortedAsync(Contact.NAME, Sort.ASCENDING);
Run Code Online (Sandbox Code Playgroud)
结果:未达到预期结果.
预期结果:
mRealm
.where(Contact.class)
.like(Contact.NAME, text, Case.INSENSITIVE)
.findAllSortedAsync(Contact.NAME, Sort.ASCENDING);
Run Code Online (Sandbox Code Playgroud)