|
2 | 2 | title: Cluster Key |
3 | 3 | --- |
4 | 4 |
|
5 | | -# ่็ฐ้ฎ (Cluster Key): ่ชๅจๆฐๆฎ็ป็ปไปฅๅ ้ๆฅ่ฏข |
| 5 | +# Cluster Key๏ผ่ชๅจๆฐๆฎ็ป็ปๅ ้ๆฅ่ฏข |
6 | 6 |
|
7 | | -่็ฐ้ฎ (cluster key) ๆไพ่ชๅจๆฐๆฎ็ป็ปๅ่ฝ๏ผๅฏๆพ่ๆ้ซๅคงๅ่กจ็ๆฅ่ฏขๆง่ฝใDatabend ๅจๅๅฐๆ ็ผไธๆ็ปญๅฐ็ฎก็ๆๆ่็ฐๆไฝโโๆจๅช้ๅฎไน่็ฐ้ฎ๏ผDatabend ๅฐฑไผๅค็ๅ
ถไฝ็ๅทฅไฝใ |
| 7 | +Cluster Key ๆไพ่ชๅจๆฐๆฎ็ป็ปๅ่ฝ๏ผๆพ่ๆๅๅคงๅ่กจ็ๆฅ่ฏขๆง่ฝใDatabend ๅจๅๅฐๆ ็ผๆ็ปญ็ฎก็ๆๆ้็พคๆไฝ - ๆจๅช้ๅฎไน Cluster Key๏ผDatabend ่ชๅจๅค็ๅ็ปญๅทฅไฝใ |
8 | 8 |
|
9 | | -## ่งฃๅณไบไปไน้ฎ้ข๏ผ |
| 9 | +## ่งฃๅณ็้ฎ้ข |
10 | 10 |
|
11 | | -ๆช็ป้ๅฝ็ป็ป็ๅคงๅ่กจไผๅธฆๆฅๆพ่็ๆง่ฝๅ็ปดๆคๆๆ๏ผ |
| 11 | +็ผบไนๅ็็ป็ป็ๅคงๅ่กจไผๅผๅๆพ่็ๆง่ฝๅ็ปดๆคๆๆ๏ผ |
12 | 12 |
|
13 | | -| ้ฎ้ข | ๅฝฑๅ | ่ชๅจ่็ฐ่งฃๅณๆนๆก | |
| 13 | +| ้ฎ้ข | ๅฝฑๅ | ่ชๅจ่็ฑป่งฃๅณๆนๆก | |
14 | 14 | |---------|--------|------------------------------| |
15 | | -| **ๅ
จ่กจๆซๆ** | ๅณไฝฟๆฏ่ฟๆปคๅ็ๆฐๆฎ๏ผๆฅ่ฏขไนไผ่ฏปๅๆดไธช่กจ | ่ชๅจ็ป็ปๆฐๆฎ๏ผๅช่ฏปๅ็ธๅ
ณๆฐๆฎๅ | |
16 | | -| **้ๆบๆฐๆฎ่ฎฟ้ฎ** | ็ธไผผๆฐๆฎๅๆฃๅจๅญๅจไธญ | ๆ็ปญๅฐ็ธๅ
ณๆฐๆฎๅ็ปๅจไธ่ตท | |
17 | | -| **ๆ
ข้่ฟๆปคๆฅ่ฏข** | WHERE ๅญๅฅๆซๆไธๅฟ
่ฆ็่ก | ่ชๅจๅฎๅ
จ่ทณ่ฟไธ็ธๅ
ณ็ๅ | |
18 | | -| **้ซ I/O ๆๆฌ** | ่ฏปๅๅคง้ๆชไฝฟ็จ็ๆงๆฐๆฎ | ่ชๅจๆๅฐๅๆฐๆฎไผ ่พ | |
19 | | -| **ๆๅจ็ปดๆค** | ้่ฆ็ๆงๅๆๅจ้ๆฐ่็ฐ่กจ | ้ถ็ปดๆคโโ่ชๅจๅๅฐไผๅ | |
20 | | -| **่ตๆบ็ฎก็** | ๅฟ
้กปไธบ่็ฐๆไฝๅ้
่ฎก็ฎ่ตๆบ | Databend ่ชๅจๅค็ๆๆ่็ฐ่ตๆบ | |
| 15 | +| **ๅ
จ่กจๆซๆ** | ๆฅ่ฏข้ๆซๆๅ
จ่กจ่ทๅ่ฟๆปคๆฐๆฎ | ่ชๅจ็ป็ปๆฐๆฎ๏ผไป
่ฏปๅ็ธๅ
ณๅ | |
| 16 | +| **้ๆบๆฐๆฎ่ฎฟ้ฎ** | ็ธไผผๆฐๆฎๅๆฃๅญๅจ | ๆ็ปญๅฐ็ธๅ
ณๆฐๆฎๅ็ปๅญๅจ | |
| 17 | +| **ๆ
ข้่ฟๆปคๆฅ่ฏข** | WHERE ๅญๅฅๆซๆๆ ๅ
ณ่ก | ่ชๅจ่ทณ่ฟๆ ๅ
ณๆฐๆฎๅ | |
| 18 | +| **้ซ I/O ๆๆฌ** | ่ฏปๅๅคง้ๆชไฝฟ็จๆฐๆฎ | ่ชๅจๆๅฐๅๆฐๆฎไผ ่พ้ | |
| 19 | +| **ๆๅจ็ปดๆค** | ้็ๆงๅนถๆๅจ้่็ฑป่กจ | ้ถ็ปดๆค - ่ชๅจๅๅฐไผๅ | |
| 20 | +| **่ตๆบ็ฎก็** | ้ไธบ่็ฑปๆไฝๅ้
่ฎก็ฎ่ตๆบ | Databend ่ชๅจ็ฎก็ๆๆ่็ฑป่ตๆบ | |
21 | 21 |
|
22 | | -**็คบไพ**: ไธไธชๅ
ๅซๆฐ็พไธๅๅ็็ตๅ่กจใๅฆๆๆฒกๆ่็ฐ๏ผๆฅ่ฏข `WHERE category IN ('Electronics', 'Computers')` ๅฟ
้กปๆซๆๆๆๅๅ็ฑปๅซใ้่ฟๆ็ฑปๅซ่ชๅจ่็ฐ๏ผDatabend ไผๆ็ปญๅฐ็ตๅญไบงๅๅ็ต่ไบงๅๅ็ปๅจไธ่ตท๏ผๅชๆซๆ 2 ไธชๆฐๆฎๅ่ไธๆฏ 1000 ๅคไธชๆฐๆฎๅใ |
| 22 | +**็คบไพ**๏ผๅซๆฐ็พไธไบงๅ็็ตๅ่กจใๆช่็ฑปๆถ๏ผๆฅ่ฏข `WHERE category IN ('Electronics', 'Computers')` ้ๆซๆๆๆไบงๅ็ฑปๅซใ้่ฟๆ็ฑปๅซ่ชๅจ่็ฑป๏ผDatabend ๆ็ปญๅฐ็ตๅญไบงๅไธ่ฎก็ฎๆบไบงๅๅ็ปๅญๅจ๏ผไป
ๆซๆ 2 ไธชๆฐๆฎๅ่้ 1000+ ไธชๅใ |
23 | 23 |
|
24 | | -## ่ชๅจ่็ฐ็ไผๅฟ |
| 24 | +## ่ชๅจ่็ฑปไผๅฟ |
25 | 25 |
|
26 | | -**ๆไบ็ปดๆค**: Databend ๆถ้คไบไปฅไธ้ๆฑ๏ผ |
27 | | -- ็ๆง่็ฐ่กจ็็ถๆ |
28 | | -- ๆๅจ่งฆๅ้ๆฐ่็ฐๆไฝ |
29 | | -- ไธบ่็ฐๆๅฎ่ฎก็ฎ่ตๆบ |
| 26 | +**็ปดๆคไพฟๆท**๏ผDatabend ๆ ้๏ผ |
| 27 | +- ็ๆง่็ฑป่กจ็ถๆ |
| 28 | +- ๆๅจ่งฆๅ้่็ฑปๆไฝ |
| 29 | +- ๅ้
่็ฑป่ฎก็ฎ่ตๆบ |
30 | 30 | - ๅฎๆ็ปดๆค็ชๅฃ |
31 | 31 |
|
32 | | -**ๅทฅไฝๅ็**: ๅฎไน่็ฐ้ฎๅ๏ผDatabend ไผ่ชๅจ๏ผ |
33 | | -- ็ๆง DML ๆไฝๅผ่ตท็่กจๆดๆน |
34 | | -- ่ฏไผฐไฝๆถ้่ฆ้ๆฐ่็ฐ่กจ |
35 | | -- ๆง่กๅๅฐ่็ฐไผๅ |
36 | | -- ๆ็ปญ็ปดๆคๆไฝณๆฐๆฎ็ป็ป |
| 32 | +**ๅทฅไฝๅ็**๏ผๅฎไน Cluster Key ๅ๏ผDatabend ่ชๅจ๏ผ |
| 33 | +- ็ๆง DML ๆไฝๅผ่ตท็่กจๅๆด |
| 34 | +- ่ฏไผฐ่กจๆฏๅฆ้้่็ฑป |
| 35 | +- ๆง่กๅๅฐ่็ฑปไผๅ |
| 36 | +- ๆ็ปญไฟๆๆไผๆฐๆฎ็ป็ป |
37 | 37 |
|
38 | | -ๆจๆ้่ฆๅ็ๅฐฑๆฏไธบๆฏไธช่กจๅฎไนไธไธช่็ฐ้ฎ (ๅฆๆ้็จ)๏ผDatabend ไผ่ชๅจ็ฎก็ๆๆๆชๆฅ็็ปดๆคใ |
| 38 | +ๆจๅช้ไธบ่กจๅฎไน่็ฑป้ฎ๏ผๅฆ้็จ๏ผ๏ผDatabend ๅฐ่ชๅจ็ฎก็ๆๆๅ็ปญ็ปดๆคใ |
39 | 39 |
|
40 | 40 | ## ๅทฅไฝๅ็ |
41 | 41 |
|
42 | | -่็ฐ้ฎๆ นๆฎๆๅฎ็ๅๅฐๆฐๆฎ็ป็ปๅฐๅญๅจๅ (Parquet ๆไปถ) ไธญ๏ผ |
| 42 | +Cluster Key ๆ นๆฎๆๅฎๅๅฐๆฐๆฎ็ป็ปๅฐๅญๅจๅ๏ผParquet ๆไปถ๏ผไธญ๏ผ |
43 | 43 |
|
44 | 44 |  |
45 | 45 |
|
46 | | -1. **ๆฐๆฎ็ป็ป** โ ็ธไผผๅผๅ็ปๅฐ็ธ้ป็ๆฐๆฎๅไธญ |
47 | | -2. **ๅ
ๆฐๆฎๅๅปบ** โ ๅญๅจๅๅฐๅผ็ๆ ๅฐ๏ผ็จไบๅฟซ้ๆฅๆพ |
48 | | -3. **ๆฅ่ฏขไผๅ** โ ๆฅ่ฏขๆ้ดๅช่ฏปๅ็ธๅ
ณๆฐๆฎๅ |
49 | | -4. **ๆง่ฝๆๅ** โ ๆซๆ็่กๆฐๆดๅฐ๏ผ็ปๆๆดๅฟซ |
| 46 | +1. **ๆฐๆฎ็ป็ป** โ ็ธไผผๅผๅ็ป่ณ็ธ้ปๅ |
| 47 | +2. **ๅ
ๆฐๆฎๅๅปบ** โ ๅญๅจๅๅผๆ ๅฐๅ
ณ็ณปๅฎ็ฐๅฟซ้ๆฅๆพ |
| 48 | +3. **ๆฅ่ฏขไผๅ** โ ๆฅ่ฏขๆถไป
่ฏปๅ็ธๅ
ณๅ |
| 49 | +4. **ๆง่ฝๆๅ** โ ๅๅฐๆซๆ่กๆฐ๏ผๅ ้็ปๆ่ฟๅ |
50 | 50 |
|
51 | 51 | ## ๅฟซ้่ฎพ็ฝฎ |
52 | 52 |
|
53 | 53 | ```sql |
54 | | --- Create table with cluster key |
55 | | --- ๅๅปบๅธฆๆ่็ฐ้ฎ็่กจ |
| 54 | +-- ๅๅปบๅซ cluster key ็่กจ |
56 | 55 | CREATE TABLE sales ( |
57 | 56 | order_id INT, |
58 | 57 | order_date TIMESTAMP, |
59 | 58 | region VARCHAR, |
60 | 59 | amount DECIMAL |
61 | 60 | ) CLUSTER BY (region); |
62 | 61 |
|
63 | | --- Or add cluster key to existing table |
64 | | --- ๆ่
ไธบ็ฐๆ่กจๆทปๅ ่็ฐ้ฎ |
| 62 | +-- ไธบ็ฐๆ่กจๆทปๅ cluster key |
65 | 63 | ALTER TABLE sales CLUSTER BY (region, order_date); |
66 | 64 | ``` |
67 | 65 |
|
68 | | -## ้ๆฉๆญฃ็กฎ็่็ฐ้ฎ |
| 66 | +## ้ๆฉๅ้ Cluster Key |
69 | 67 |
|
70 | | -ๆ นๆฎๆจๆๅธธ่ง็ๆฅ่ฏข่ฟๆปคๅจ้ๆฉๅ๏ผ |
| 68 | +ๆ นๆฎๅธธ็จๆฅ่ฏข่ฟๆปคๆกไปถ้ๆฉๅ๏ผ |
71 | 69 |
|
72 | | -| ๆฅ่ฏขๆจกๅผ | ๆจ่็่็ฐ้ฎ | ็คบไพ | |
| 70 | +| ๆฅ่ฏขๆจกๅผ | ๆจ่ Cluster Key | ็คบไพ | |
73 | 71 | |---------------|------------------------|---------| |
74 | | -| ๆๅๅ่ฟๆปค | ่ฏฅๅ | `CLUSTER BY (region)` | |
75 | | -| ๆๅคๅ่ฟๆปค | ๅคๅ | `CLUSTER BY (region, category)` | |
| 72 | +| ๅๅ่ฟๆปค | ่ฏฅๅ | `CLUSTER BY (region)` | |
| 73 | +| ๅคๅ่ฟๆปค | ๅคๅ็ปๅ | `CLUSTER BY (region, category)` | |
76 | 74 | | ๆฅๆ่ๅดๆฅ่ฏข | ๆฅๆ/ๆถ้ดๆณๅ | `CLUSTER BY (order_date)` | |
77 | | -| ้ซๅบๆฐๅ | ไฝฟ็จ่กจ่พพๅผๅๅฐๅผ | `CLUSTER BY (DATE(created_at))` | |
| 75 | +| ้ซๅบๆฐๅ | ไฝฟ็จ่กจ่พพๅผ้ๅบ | `CLUSTER BY (DATE(created_at))` | |
78 | 76 |
|
79 | | -### ๅฅฝ็่็ฐ้ฎ vs ๅ็่็ฐ้ฎ |
| 77 | +### ไผๅฃ Cluster Key ๅฏนๆฏ |
80 | 78 |
|
81 | | -| โ
ๅฅฝ็้ๆฉ | โ ๅทฎ็้ๆฉ | |
| 79 | +| โ
ไผ้ๆนๆก | โ ๅฃ้ๆนๆก | |
82 | 80 | |----------------|----------------| |
83 | | -| ้ข็น่ฟๆปค็ๅ | ๅพๅฐไฝฟ็จ็ๅ | |
84 | | -| ไธญ็ญๅบๆฐ (100-10K ไธชๅผ) | ๅธๅฐๅ (ๅผๅคชๅฐ) | |
85 | | -| ๆฅๆ/ๆถ้ดๅ | ๅฏไธ ID ๅ (ๅผๅคชๅค) | |
86 | | -| ๅบๅใ็ฑปๅซใ็ถๆ | ้ๆบๆๅๅธๅ | |
| 81 | +| ้ซ้ข่ฟๆปคๅ | ไฝ้ขไฝฟ็จๅ | |
| 82 | +| ไธญๅบๆฐ๏ผ100-10K ๅผ๏ผ | ๅธๅฐๅ๏ผๅๅผ่ฟๅฐ๏ผ | |
| 83 | +| ๆฅๆ/ๆถ้ดๅ | ๅฏไธ ID ๅ๏ผๅๅผ่ฟๅค๏ผ | |
| 84 | +| ๅบๅ/็ฑปๅซ/็ถๆๅ | ้ๆบๆๅๅธๅ | |
87 | 85 |
|
88 | | -## ็ๆงๆง่ฝ |
| 86 | +## ๆง่ฝ็ๆง |
89 | 87 |
|
90 | 88 | ```sql |
91 | | --- Check clustering effectiveness |
92 | | --- ๆฃๆฅ่็ฐๆๆ |
| 89 | +-- ๆฃๆฅ่็ฑปๆๆ |
93 | 90 | SELECT * FROM clustering_information('database_name', 'table_name'); |
94 | 91 |
|
95 | | --- Key metrics to watch: |
96 | 92 | -- ๅ
ณ้ฎๆๆ ๏ผ |
97 | | --- average_depth: Lower is better (< 2 ideal) |
98 | | --- average_depth: ่ถไฝ่ถๅฅฝ (็ๆณๆ
ๅต < 2) |
99 | | --- average_overlaps: Lower is better |
100 | | --- average_overlaps: ่ถไฝ่ถๅฅฝ |
101 | | --- block_depth_histogram: More blocks at depth 1-2 |
102 | | --- block_depth_histogram: ๆดๅคๆฐๆฎๅๅจๆทฑๅบฆ 1-2 |
| 93 | +-- average_depth: ๅผ่ถไฝ่ถๅฅฝ๏ผ<2 ไธบไผ๏ผ |
| 94 | +-- average_overlaps: ๅผ่ถไฝ่ถๅฅฝ |
| 95 | +-- block_depth_histogram: ๆทฑๅบฆ 1-2 ็ๅๅ ๆฏ่ถ้ซ่ถๅฅฝ |
103 | 96 | ``` |
104 | 97 |
|
105 | | -## ไฝๆถ้ๆฐ่็ฐ |
| 98 | +## ้่็ฑปๆถๆบ |
106 | 99 |
|
107 | | -้็ๆฐๆฎๅๅ๏ผ่กจไผ้็ๆถ้ดๅๅพๆ ๅบ๏ผ |
| 100 | +ๆฐๆฎๅๆดไผๅฏผ่ด่กจ้ๆธๅคฑๅบ๏ผ |
108 | 101 |
|
109 | 102 | ```sql |
110 | | --- Check if re-clustering is needed |
111 | | --- ๆฃๆฅๆฏๅฆ้่ฆ้ๆฐ่็ฐ |
| 103 | +-- ๆฃๆฅๆฏๅฆ้้่็ฑป |
112 | 104 | SELECT IF(average_depth > 2 * LEAST(GREATEST(total_block_count * 0.001, 1), 16), |
113 | 105 | 'Re-cluster needed', |
114 | 106 | 'Clustering is good') |
115 | 107 | FROM clustering_information('your_database', 'your_table'); |
116 | 108 |
|
117 | | --- Re-cluster the table |
118 | | --- ้ๆฐ่็ฐ่กจ |
| 109 | +-- ้่็ฑปๆไฝ |
119 | 110 | ALTER TABLE your_table RECLUSTER; |
120 | 111 | ``` |
121 | 112 |
|
122 | 113 | ## ๆง่ฝ่ฐไผ |
123 | 114 |
|
124 | | -### ่ชๅฎไนๆฐๆฎๅๅคงๅฐ |
125 | | -่ฐๆดๆฐๆฎๅๅคงๅฐไปฅ่ทๅพๆดๅฅฝ็ๆง่ฝ๏ผ |
| 115 | +### ่ชๅฎไนๅๅคงๅฐ |
| 116 | +่ฐๆดๅๅคงๅฐไผๅๆง่ฝ๏ผ |
126 | 117 |
|
127 | 118 | ```sql |
128 | | --- Smaller blocks = fewer rows per query |
129 | | --- ๆดๅฐ็ๆฐๆฎๅ = ๆฏๆฌกๆฅ่ฏข็่กๆฐๆดๅฐ |
| 119 | +-- ่พๅฐๅ = ๅๆฌกๆฅ่ฏขๅค็่กๆฐๆดๅฐ |
130 | 120 | ALTER TABLE sales SET OPTIONS( |
131 | 121 | ROW_PER_BLOCK = 100000, |
132 | 122 | BLOCK_SIZE_THRESHOLD = 52428800 |
133 | 123 | ); |
134 | 124 | ``` |
135 | 125 |
|
136 | | -### ่ชๅจ้ๆฐ่็ฐ |
137 | | -- `COPY INTO` ๅ `REPLACE INTO` ไผ่ชๅจ่งฆๅ้ๆฐ่็ฐ |
138 | | -- ๅฎๆ็ๆง่็ฐๆๆ |
139 | | -- ๅฝ `average_depth` ่ฟ้ซๆถ้ๆฐ่็ฐ |
| 126 | +### ่ชๅจ้่็ฑป |
| 127 | +- `COPY INTO` ๅ `REPLACE INTO` ่ชๅจ่งฆๅ้่็ฑป |
| 128 | +- ๅฎๆ็ๆง่็ฑปๆๆ |
| 129 | +- ๅฝ `average_depth` ่ฟ้ซๆถๆง่ก้่็ฑป |
140 | 130 |
|
141 | 131 | ## ๆไฝณๅฎ่ทต |
142 | 132 |
|
143 | | -| ๅฎ่ทต | ็ๅค | |
| 133 | +| ๅฎ่ทตๆนๆก | ไผๅฟ | |
144 | 134 | |----------|---------| |
145 | | -| **ไป็ฎๅๅผๅง** | ้ฆๅ
ไฝฟ็จๅๅ่็ฐ้ฎ | |
| 135 | +| **ไป็ฎๅผๅง** | ไผๅ
ไฝฟ็จๅๅ Cluster Key | |
146 | 136 | | **็ๆงๆๆ ** | ๅฎๆๆฃๆฅ clustering_information | |
147 | | -| **ๆต่ฏๆง่ฝ** | ๅจ่็ฐๅๅๆต้ๆฅ่ฏข้ๅบฆ | |
148 | | -| **ๅฎๆ้ๆฐ่็ฐ** | ๆฐๆฎๆดๆนๅไฟๆ่็ฐ | |
149 | | -| **่่ๆๆฌ** | ่็ฐไผๆถ่่ฎก็ฎ่ตๆบ | |
| 137 | +| **ๆง่ฝๆต่ฏ** | ๅฏนๆฏ่็ฑปๅๅๆฅ่ฏข้ๅบฆ | |
| 138 | +| **ๅฎๆ้่็ฑป** | ๆฐๆฎๅๆดๅ็ปดๆค่็ฑป็ถๆ | |
| 139 | +| **ๆๆฌ่้** | ่็ฑปๆถ่่ฎก็ฎ่ตๆบ | |
150 | 140 |
|
151 | 141 | ## ้่ฆ่ฏดๆ |
152 | 142 |
|
153 | 143 | :::tip |
154 | | -**ไฝๆถไฝฟ็จ่็ฐ้ฎ:** |
155 | | -- ๅคงๅ่กจ (ๆฐ็พไธ่กไปฅไธ) |
156 | | -- ๆฅ่ฏขๆง่ฝๆ
ข |
157 | | -- ้ข็นๅบไบ่ฟๆปคๅจ็ๆฅ่ฏข |
| 144 | +**้็จๅบๆฏ๏ผ** |
| 145 | +- ๅคงๅ่กจ๏ผ็พไธ+่ก๏ผ |
| 146 | +- ๆฅ่ฏขๆง่ฝไฝไธ |
| 147 | +- ้ซ้ข่ฟๆปคๆฅ่ฏข |
158 | 148 | - ๅๆๅๅทฅไฝ่ด่ฝฝ |
159 | 149 |
|
160 | | -**ไฝๆถไธไฝฟ็จ:** |
| 150 | +**ไธ้็จๅบๆฏ๏ผ** |
161 | 151 | - ๅฐๅ่กจ |
162 | 152 | - ้ๆบ่ฎฟ้ฎๆจกๅผ |
163 | | -- ้ข็นๆดๆน็ๆฐๆฎ |
| 153 | +- ๆฐๆฎๅๆด้ข็น |
164 | 154 | ::: |
165 | 155 |
|
166 | 156 | --- |
167 | 157 |
|
168 | | -*่็ฐ้ฎๅจๅ
ทๆๅฏ้ขๆต่ฟๆปคๆจกๅผ็ๅคงๅใ้ข็นๆฅ่ฏข็่กจไธๆๆๆใไปๆจๆๅธธ่ง็ WHERE ๅญๅฅๅๅผๅงใ* |
| 158 | +*Cluster Key ๅจๅ
ทๆๅฏ้ขๆต่ฟๆปคๆจกๅผ็ๅคงๅ้ซ้ขๆฅ่ฏข่กจไธๆๆๆไฝณใๅปบ่ฎฎไปๆๅธธๅบ็ฐๅจ WHERE ๅญๅฅ็ๅๅผๅงๅฎๆฝใ* |
0 commit comments