-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathmemsql_create_table.sql
More file actions
177 lines (146 loc) · 4.33 KB
/
memsql_create_table.sql
File metadata and controls
177 lines (146 loc) · 4.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
DROP TABLE IF EXISTS warehouse;
-- This schema is optimized for ~128 warehouses/partition in terms of
-- hash index bucket counts.
CREATE TABLE warehouse (
w_id INT NOT NULL,
w_name VARCHAR(10),
w_street_1 VARCHAR(20),
w_street_2 VARCHAR(20),
w_city VARCHAR(20),
w_state CHAR(2),
w_zip CHAR(9),
w_tax DECIMAL(4,2),
w_ytd DECIMAL(12,2),
-- 512 is the minimum bucket count
PRIMARY KEY USING HASH (w_id) BUCKET_COUNT = 512,
SHARD KEY (w_id)
);
DROP TABLE IF EXISTS district;
CREATE TABLE district (
d_id tinyint not null,
d_w_id INT NOT NULL,
d_name varchar(10),
d_street_1 varchar(20),
d_street_2 varchar(20),
d_city varchar(20),
d_state char(2),
d_zip char(9),
d_tax decimal(4,2),
d_ytd decimal(12,2),
d_next_o_id int,
PRIMARY KEY USING HASH (d_w_id, d_id) BUCKET_COUNT = 2048,
SHARD KEY (d_w_id)
);
DROP TABLE IF EXISTS customer;
CREATE TABLE customer (
c_id int not null,
c_d_id tinyint not null,
c_w_id INT NOT NULL,
c_first varchar(16),
c_middle char(2),
c_last varchar(16),
c_street_1 varchar(20),
c_street_2 varchar(20),
c_city varchar(20),
c_state char(2),
c_zip char(9),
c_phone char(16),
c_since datetime,
c_credit char(2),
c_credit_lim bigint,
c_discount decimal(4,2),
c_balance decimal(12,2),
c_ytd_payment decimal(12,2),
c_payment_cnt smallint,
c_delivery_cnt smallint,
c_data text,
PRIMARY KEY USING HASH (c_w_id, c_d_id, c_id) BUCKET_COUNT = 1048576,
SHARD KEY(c_w_id),
INDEX idx_customer (c_w_id,c_d_id,c_last,c_first)
);
drop table if exists history;
create table history (
h_c_id int,
h_c_d_id tinyint,
h_c_w_id INT,
h_d_id tinyint,
h_w_id INT,
h_date datetime,
h_amount decimal(6,2),
h_data varchar(24),
KEY() USING CLUSTERED COLUMNSTORE,
shard key (h_c_w_id)
);
DROP TABLE IF EXISTS new_orders;
CREATE TABLE new_orders (
no_o_id INT NOT NULL,
no_d_id TINYINT NOT NULL,
no_w_id INT NOT NULL,
PRIMARY KEY (no_w_id, no_d_id, no_o_id),
SHARD KEY (no_w_id)
);
drop table if exists orders;
create table orders (
o_id int not null,
o_d_id tinyint not null,
o_w_id INT not null,
o_c_id int,
o_entry_d datetime,
o_carrier_id tinyint,
o_ol_cnt tinyint,
o_all_local tinyint,
PRIMARY KEY (o_w_id, o_d_id, o_id),
shard key(o_w_id)
);
drop table if exists order_line;
create table order_line (
ol_o_id int not null,
ol_d_id tinyint not null,
ol_w_id INT not null,
ol_number tinyint not null,
ol_i_id int,
ol_supply_w_id INT,
ol_delivery_d datetime,
ol_quantity tinyint,
ol_amount decimal(6,2),
ol_dist_info char(24),
PRIMARY KEY (ol_w_id, ol_d_id, ol_o_id, ol_number),
SHARD KEY (ol_w_id),
INDEX ol USING HASH (ol_w_id, ol_d_id, ol_o_id)
);
DROP TABLE IF EXISTS item;
CREATE REFERENCE TABLE item (
i_id INT NOT NULL,
i_im_id INT,
i_name VARCHAR(24),
i_price DECIMAL(5,2),
i_data VARCHAR(50),
-- Reference table, not split by partition
PRIMARY KEY USING HASH (i_id) BUCKET_COUNT = 131072
);
DROP TABLE IF EXISTS stock;
CREATE TABLE stock (
s_i_id INT NOT NULL,
s_w_id INT NOT NULL,
s_quantity SMALLINT,
s_dist_01 CHAR(24),
s_dist_02 CHAR(24),
s_dist_03 CHAR(24),
s_dist_04 CHAR(24),
s_dist_05 CHAR(24),
s_dist_06 CHAR(24),
s_dist_07 CHAR(24),
s_dist_08 CHAR(24),
s_dist_09 CHAR(24),
s_dist_10 CHAR(24),
s_ytd DECIMAL(8,0),
s_order_cnt SMALLINT,
s_remote_cnt SMALLINT,
s_data VARCHAR(50),
PRIMARY KEY USING HASH (s_w_id, s_i_id) BUCKET_COUNT = 4193404,
SHARD KEY (s_w_id),
INDEX low_stock (s_w_id, s_i_id, s_quantity)
);
CREATE INDEX idx_orders ON orders (o_w_id,o_d_id,o_c_id,o_id);
CREATE INDEX fkey_stock_2 ON stock (s_i_id);
CREATE INDEX fkey_order_line_2 ON order_line (ol_supply_w_id,ol_i_id);