MySQL語句優化10項基本原則

2021-07-02 05:30:13 字數 2670 閱讀 4904

1

select *

from

table

where

year(d

)>

2011

;

優化為: 1

select *

from

table

where

d>

'2011-01-01';

12

3

4

select

*from

ajoinbon

a.id=

b.id left

joincon

c.time=d

.date

left

joindon

c.pid=b.

aid left

joineon

e.cid=a.

did;

例如原句為: 1

select

*from

table

where

name

like%de

%;優化為:

1

select

*from

table

where

name

>=

'de'

andname

<

'df'

;//侷限性很大[慎重]

例如原句為: 1

select

*from

tabel;

(據說有公司見遇到乙個 * 號 扣10塊錢~~~

優化為:

1

selectid,

name

,age

from

table

;

(需要多少取多少,是 * 的話,如果無用字段資料過大則記憶體消耗比較大)

例如原語句: 1

2

3

insert

into

table(id

,name

)values(1

,'sunphp');

insert

into

table(id

,name

)values(2

,'mysql');

insert

into

table(id

,name

)values(3

,'優化');

優化為:

1

2

insert

into

table(id

,name

)values(1

,'sunphp'),

values(2

,'mysql'),

values(3

,'優化');

例如原句為: 1

select

*from

article

order

byid

limit

1000000,10

; 優化為:

1

select

*from

article

where

id between

1000000

and1000010

order

byid

;

between 限定比limit快,所以在海量資料訪問時,建議用between 或是 where  替換掉 limit。

但是between 也有缺陷,如果id中間有斷行或是中間部分id不讀取的情況,總讀取量可能小於預計讀取量(有損服務)。

在去比較靠後的資料時,通過 desc 方式吧資料反向查詢,以減少對前面資料的掃瞄,讓 limit 得基數越小越好。 1

select

*from

table

order

byrand()

limit20;

使用下面的語句代替: 1

2

3

4

5

select

*from

table

ast1

join(

select

round

(rand()

*(select

max(id)

from

table)-

(select

min(id)

from

table))

+(select

min(id)

from

table)

)asid

)ast2

wheret1.

id>=t2.

idorder

byt1.id

limitt1;

這是獲得一條隨機記錄,這樣即使執行20次,也比原來的語句效率高。或者先用php產生隨機數,把這些字元傳給mysql,mysql 裡面使用 in 查詢。

帶你深入了解MySQL語句優化的基本原則

mysql語句優化的基本原則 1 使用索引來更快地遍歷表。預設情況下建立的索引是非群集索引,但有時它並不是最佳的。在非群集索引下,資料在物理上隨機存放在資料頁上。合理的索引設計要建立在對各種查詢的分析和 上。一般來說 a.有大量重複值 且經常有範圍查詢 和order by group by發生的列,...

mysql 語句優化例項 MySQL 語句優化例項

優化 limit 分頁 執行耗時 1.379s select from vio basic domain info limit 1000000,10 處理分頁慢查詢的方式一般有以下幾種 思路一 構造覆蓋索引 思路二 優化 offset 無法用上覆蓋索引,那麼重點是想辦法快速過濾掉前 100w 條資料...

mysql語句優化原則 MySQL語句優化的原則

1 使用索引來更快地遍歷表。預設情況下建立的索引是非群集索引,但有時它並不是最佳的。在非群集索引下,資料在物理上隨機存放在資料頁上。合理的索引設計要建立在對各種查詢的分析和 上。一般來說 a.有大量重複值 且經常有範圍查詢 和order by group by發生的列,可考慮建立群集索引 b.經常同...