使用此表:
<form>
<input type="text" name="search_code" onfocus="clearField(this, this.placeholder='');" onblur="this.placeholder='introdu codul'" id="search_code" placeholder="introdu codul" autocomplete="off" value="" /><br/>
<input type="" name="insert_code" onfocus="clearField(this, this.placeholder='');" onblur="this.placeholder='scaneaza codul'" id="insert_code" placeholder="scaneaza codul" autocomplete="off" value="" /><br/><br/>
<input type="submit" id="button" name="button" value="verifica COD" />
</form>
<div id="result"></div>
此查询未使用杜松子酒索引:
=> \d "user"
Table "public.user"
Column | Type | Modifiers
----------------------+-----------------------------+---------------------------------------------------
id | integer | not null default nextval('user_id_seq'::regclass)
email | character varying(255) |
Indexes:
"user_pkey" PRIMARY KEY, btree (id)
"user_email_key" UNIQUE CONSTRAINT, btree (email)
"user_email_idx" gin (email gin_trgm_ops)
为什么?
答案 0 :(得分:0)
https://hashrocket.com/blog/posts/exploring-postgres-gin-index
注意事项 这种方法的唯一缺点是输入查询必须至少为3个字母,因为Postgres需要能够从输入查询中提取至少一个trigram才能使用我们的trigram索引。
答案 1 :(得分:0)
因为你实际上并没有使用trigram索引或你的postgres版本&lt; 9.1。
select email from "user" where similarity(email, 'xyz@gmail.com') > 0.5;
其中0.5是您的阈值,0完全不同,1精确匹配
UPD:考虑您将1个字符作为匹配字词,因为一个符号可以匹配大量文档,但可能会显示性能不佳