sql語句的效率優化等

2021-06-18 07:05:02 字數 768 閱讀 2333

優化前的語句:  postgres 資料庫,優化前20s,優化後200ms

select c.key,

c.x_key,

c.tags,

x.name

from context c

join x

on c.x_key = x.key

where c.key = any (array[15368196, -- 11,000 other keys --)])

and c.x_key = 1

and c.tags @> array[e'blah'];

優化後:

select c.key,

c.x_key,

c.tags,

x.name

from context c

join x

on c.x_key = x.key

where c.key = any (values (15368196), -- 11,000 other keys --)

and c.x_key = 1

and c.tags @> array[e'blah'];

你能發現有啥不同之處嗎?把array換成了values。

我們使用array[...]列舉出所有的關鍵字來進行查詢,但卻欺騙了查詢優化器。

values(...)讓優化器充分使用關鍵字索引。僅僅是一行**的改變,並且沒有產生任何語義的改變。

在查詢語句中用到count函式時,注意盡量避免用count(*), 應該用 count(1).

sql語句執行效率

兩種執行的效果一樣,但執行的速度不一樣,在大資料的時候,可看出。select distinct a.o flowid from chengjiinfo as a where k kecheng not in select kemu from chengjidankeinfo where o flow...

VS自動優化SQL語句邏輯與效率的疑問

用vs2005時發現乙個問題,生成資料集時,vs會幫你自動優化語句,一般都不懷疑微軟的水平,不過這次優化之後實在是看不懂了,懷疑優化錯了,於是在查詢分析器裡試了一下,結果倒是對的,可是執行計畫裡卻顯示優化後的效率低一些,奇怪了 下面 裡前一行是我寫的,後一行是vs優化出來的 使用了sql serve...

VS自動優化SQL語句邏輯與效率的疑問

用vs2005時發現乙個問題,生成資料集時,vs會幫你自動優化語句,一般都不懷疑微軟的水平,不過這次優化之後實在是看不懂了,懷疑優化錯了,於是在查詢分析器裡試了一下,結果倒是對的,可是執行計畫裡卻顯示優化後的效率低一些,奇怪了 下面 裡前一行是我寫的,後一行是vs優化出來的 使用了sql serve...