sql效能優化之表分割槽實戰

2021-10-01 12:55:53 字數 1309 閱讀 7141

以mysql為例

1、建立表:

create table `users` (

`userid` int(11

) not null,

`username` varchar(

255) default null,

`usercode` varchar(

255) default null,

primary key (`userid`)

) engine=innodb default charset=utf8

2、插入資料

insert into users values (

'1',

'張三'

,'c001');

insert into users values (

'2',

'王五'

,'c002');

insert into users values (

'3',

'李娜'

,'c003'

);

3、使用range分割槽(mysql分割槽方式很多,此處以range為例)

alter table users 

partition by range

(userid)

( partition p1 values less than (1)

, partition p2 values less than (2)

, partition p3 values less than maxvalue

);

4、查詢分割槽

5、查詢分割槽中的資料(例如此處為userid來分割槽,當我想要在百萬千萬級別資料中查詢id=1時,可以直接where userid=1,mysql會自動匹配到對應的分割槽)

select *

from users where userid=

1;

Sql效能優化之in exists

in 和exists in是把外表和內錶作hash 連線,而exists 是對外表作loop 迴圈,每次loop 迴圈再對內表進行查詢。一直以來認為exists 比in 效率高的說法是不準確的。如果查詢的兩個表大小相當,那麼用in 和exists 差別不大。如果兩個表中乙個較小,乙個是大表,則子查詢...

Sql效能優化之UNION UNION ALL

sql union 操作符 union 操作符用於合併兩個或多個 select 語句的結果集。請注意,union 內部的 select 語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每條 select 語句中的列的順序必須相同。1 sql union 語法 select column ...

Db2效能優化 表分割槽

前言 實驗環境 os 名稱 microsoft windows server 2008 r2 enterprise os 版本 6.1.7601 service pack 1 build 7601 product name db2 enterprise server edition license ...