是否有任何其他解決方案可用來代替Like來匹配開頭?sql像備用
這裏是我的查詢匹配開始使用like。
explain analyze select * from completedcalls where call_id like '[email protected]%';
QUERY PLAN
------------------------------------------------------------------------------------------------------------------
Seq Scan on completedcalls (cost=0.00..52659.96 rows=112 width=228) (actual time=1.541..249.857 rows=2 loops=1)
Filter: ((call_id)::text ~~ '[email protected]%'::text)
Total runtime: 249.893 ms
(3 rows)
這是非常廣泛的,因爲它執行序列掃描,而不是索引掃描。由於它的性質,它不能使用提供的列上的索引。列的索引也很簡單:
"i_call_id" btree (call_id)
有什麼特殊的類指標,可以幫助想提高速度,或任何其他方式,而不使用像實現一樣嗎?
二手錶的腳本是:
Table "public.completedcalls"
Column | Type | Modifiers
---------------+--------------------------+--------------
call_id | character varying(128) |
sip_code | integer |
duration | integer |
setup_time | timestamp with time zone | not null
authname | character varying(30) |
src_sig_ip | character varying(20) |
dst_sig_ip | character varying(20) |
cld | character varying(22) |
cli | character varying(22) |
Indexes:
"i_call_id" btree (call_id)
"i_dst_sig_ip" btree (dst_sig_ip)
您可以發佈'CREATE TABLE'腳本嗎? – Quassnoi
只是拋出一個想法:在'call_id'中爲所需字符下標並將它們與字符串進行比較時,性能如何? – woemler