我有一个简单的~25个单词列表.我在PostgreSQL中有一个varchar字段,让我们说列表是['foo', 'bar', 'baz'].我想在我的表中找到任何包含这些单词的行.这会有效,但我想要更优雅的东西.
select *
from table
where (lower(value) like '%foo%' or lower(value) like '%bar%' or lower(value) like '%baz%')
Run Code Online (Sandbox Code Playgroud) 我被指示"不要打扰LIKE"并~改为使用.什么是错的LIKE又是怎样的~不同?
~在这种情况下是否有名称或者人们说"使用代字号运算符"?
我正在实现一个具有数据类型为的列的表,tsvector我试图了解哪个索引更适合使用?
GIN还是GiST?
通过这里查看postgres文档,我似乎得到了:
GiST更新和构建索引的速度更快,而且比杜松子酒更准确.
GIN更新和构建索引的速度较慢,但更准确.
好的,那么为什么有人想要杜松子酒的gist索引字段呢?如果要点可能会给你错误的结果?必须有一些优势(外部表现).
当我想要使用GIN和GiST时,有人可以用外行的方式解释吗?
我的基于RoR的网站上的搜索功能有点问题.我有很多产品和一些CODE.此代码可以是任何字符串,如"AB-123-lHdfj".现在我使用ILIKE运算符来查找产品:
Product.where("code ILIKE ?", "%" + params[:search] + "%")
Run Code Online (Sandbox Code Playgroud)
它工作正常,但找不到像"AB123-lHdfj"或"AB123lHdfj"这样的代码的产品.
我该怎么办?可能是postgresql有一些字符串规范化功能,还是其他一些方法来帮助我?:)
以下两个查询组件的性能如何比较?
更喜欢
... LOWER(description) LIKE '%abcde%' ...
Run Code Online (Sandbox Code Playgroud)
我喜欢
... description iLIKE '%abcde%' ...
Run Code Online (Sandbox Code Playgroud) postgresql performance pattern-matching database-performance
我需要在表中创建类似字符串的排名.
我有下表
create table names (
name character varying(255)
);
Run Code Online (Sandbox Code Playgroud)
目前,我正在使用提供该功能的pg_trgm模块similarity,但我遇到了效率问题.我创建了一个像Postgres手册建议的索引:
CREATE INDEX trgm_idx ON names USING gist (name gist_trgm_ops);
Run Code Online (Sandbox Code Playgroud)
我正在执行以下查询:
select (similarity(n1.name, n2.name)) as sim, n1.name, n2.name
from names n1, names n2
where n1.name != n2.name and similarity(n1.name, n2.name) > .8
order by sim desc;
Run Code Online (Sandbox Code Playgroud)
查询有效,但是当你有数百个名字时,它确实很慢.此外,也许我忘了一点SQL,但我不明白为什么我不能使用条件and sim > .8没有得到"列sim不存在"错误.
我想要任何提示使查询更快.
我想将url字段与url前缀(可能包含百分号)匹配,例如.where("url LIKE ?", "#{some_url}%").什么是最多的Rails方式?
如何在Rails中修改搜索查询的where/like条件:
find(:all, :conditions => ["lower(name) LIKE ?", "%#{search.downcase}%"])
无论重音如何,结果都是匹配的?(例如métro= metro).因为我使用的是utf8,所以我不能使用"to_ascii".生产正在Heroku上运行.
我有一个问题,希望得到你的回答:-)
因此,我使用geonames.org并将所有德国城市的数据导入所有地区.
如果我进入"汉堡",它会列出"汉堡中心,汉堡机场"等.该应用程序位于一个无法访问互联网的封闭网络中,因此我无法访问geonames.org Web服务并且必须导入数据.:(所有区域的城市都是自动完成的.所以每次击中都会导致XHR请求等等.
现在我的客户询问是否可以获得世界上的所有数据.最后,大约5.000.000行,有45.000.000个替代名称等.
Postgres每个查询需要大约3秒钟,这使得自动完成无法使用.
现在我想到了CouchDb,已经使用过了.我的问题:
我想发布"Ham",我希望CouchDB获取所有以"Ham"开头的文档.如果我进入"汉堡",我希望它能够返回汉堡,等等.
CouchDB是否适合它?您可以推荐哪些其他数据库以低延迟(可能是内存中)和数百万个数据集进行响应?数据集不会定期更改,而是相当静态!
我subquery must return only one column尝试运行以下查询时收到错误:
SELECT mat.mat as mat1, sum(stx.total ) as sumtotal1,
(
SELECT mat.mat as mat, sum(stx.total) as sumtotal
FROM stx
LEFT JOIN mat ON stx.matid = mat.matid
LEFT JOIN sale ON stx.saleid = sale.id
WHERE stx.date BETWEEN '2013-05-01' AND '2013-08-31'
AND sale.userid LIKE 'A%'
GROUP BY mat.mat
) AS MyField
FROM stx
LEFT JOIN mat ON stx.matid = mat.matid
LEFT JOIN sale ON stx.saleid = sale.id
WHERE stx.date BETWEEN '2013-05-01' AND '2013-08-31'
AND sale.userid …Run Code Online (Sandbox Code Playgroud) postgresql ×9
sql ×6
indexing ×2
performance ×2
couchdb ×1
cross-join ×1
fuzzy-search ×1
join ×1
left-join ×1
regex ×1
similarity ×1
syntax ×1
text ×1
unaccent ×1