java select where_SQL性能,在SELECT和WHERE条件下执行得更快

更新:废话!它不是一个整数,它的性格各不相同(10)

像这样执行查询使用索引

SELECT t."FieldID"

FROM table t

WHERE t."FieldID" = '0123456789'

但如果我执行此操作,则不使用索引

SELECT t."FieldID"

FROM table t

WHERE t."FieldID" LIKE '01%'

或这个

SELECT t."FieldID"

FROM table t

WHERE "substring"(t."FieldID", 0, 3) = '01'

这也是

SELECT t."FieldID"

FROM table t

WHERE t."FieldID" ~ '^01'

我的索引看起来像这样

CREATE UNIQUE INDEX fieldid_index

ON "table"

USING btree

("FieldID");

运行PostgreSQL 7.4(是的升级)

我正在优化我的查询,并想知道在语句的SELECT或WHERE子句中使用三种类型的表达式之一是否有任何性能提升 .

注意:使用这些约束样式执行的查询返回大约200,000条记录

示例数据是一个不同的字符(10): 0123456789 ,它也被编入索引

1. (Substring)

SELECT CASE

WHEN "substring"(t."FieldID"::text, 0, 3) = '01'::text

THEN 'Found Match'::text

ELSE NULL::text

END AS matching_group

2. (Like)

SELECT CASE

WHEN t."FieldID"::text LIKE '01%'

THEN 'Found Match'::text

ELSE NULL::text

END AS matching_group

3. (RegEx)

SELECT CASE

WHEN t."FieldID" ~ '^01'

THEN 'Found Match'::text

ELSE NULL::text

END AS matching_group

在WHERE子句中使用一个优于另一个还有任何性能优势吗?

1. (Substring)

WHERE CASE

WHEN "substring"(t."FieldID"::text, 0, 3) = '01'::text

THEN 1

ELSE 0

END = 1

2. (Like)

WHERE CASE

WHEN t."FieldID"::text LIKE '01%'

THEN 1

ELSE 0

END = 1

3. (RegEx)

WHERE CASE

WHEN t."FieldID" ~ '^01'

THEN 1

ELSE 0

END = 1

在SELECT中使用一个选项和在WHERE子句中使用不同的选项可以提高性能吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值