* Replace underscores with hyphens * remove temporary code * fix style check * fix collapse
6.2 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | d734a8e46d |
40 | پیوستن |
پیوستن
ساختار داده تهیه شده برای استفاده در JOIN عملیات.
ایجاد یک جدول
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2],
) ENGINE = Join(join_strictness, join_type, k1[, k2, ...])
شرح مفصلی از CREATE TABLE پرس و جو.
پارامترهای موتور
join_strictness
– پیوستن به سختی.join_type
– پیوستن به نوع.k1[, k2, ...]
– Key columns from theUSING
بند کهJOIN
عملیات با ساخته شده.
وارد کردن join_strictness
و join_type
پارامترهای بدون نقل قول, مثلا, Join(ANY, LEFT, col1)
. اونا باید با JOIN
عملیاتی که جدول خواهد شد برای استفاده. اگر پارامترها مطابقت ندارند, خانه عروسکی می کند یک استثنا پرتاب نمی کند و ممکن است داده های نادرست بازگشت.
استفاده از جدول
مثال
ایجاد جدول سمت چپ:
CREATE TABLE id_val(`id` UInt32, `val` UInt32) ENGINE = TinyLog
INSERT INTO id_val VALUES (1,11)(2,12)(3,13)
ایجاد سمت راست Join
جدول:
CREATE TABLE id_val_join(`id` UInt32, `val` UInt8) ENGINE = Join(ANY, LEFT, id)
INSERT INTO id_val_join VALUES (1,21)(1,22)(3,23)
پیوستن به جداول:
SELECT * FROM id_val ANY LEFT JOIN id_val_join USING (id) SETTINGS join_use_nulls = 1
┌─id─┬─val─┬─id_val_join.val─┐
│ 1 │ 11 │ 21 │
│ 2 │ 12 │ ᴺᵁᴸᴸ │
│ 3 │ 13 │ 23 │
└────┴─────┴─────────────────┘
به عنوان یک جایگزین, شما می توانید داده ها را از بازیابی Join
جدول مشخص کردن مقدار پیوستن کلید:
SELECT joinGet('id_val_join', 'val', toUInt32(1))
┌─joinGet('id_val_join', 'val', toUInt32(1))─┐
│ 21 │
└────────────────────────────────────────────┘
انتخاب و قرار دادن داده ها
شما می توانید استفاده کنید INSERT
نمایش داده شد برای اضافه کردن داده ها به Join
- جدول موتور . اگر جدول با ایجاد شد ANY
سخت, داده ها برای کلید های تکراری نادیده گرفته می شوند. با ALL
سخت, تمام ردیف اضافه می شوند.
شما نمی توانید انجام دهید SELECT
پرس و جو به طور مستقیم از جدول. بجای, استفاده از یکی از روش های زیر:
- میز را به سمت راست قرار دهید
JOIN
بند بند. - تماس با جوینت تابع, که به شما امکان استخراج داده ها از جدول به همان شیوه به عنوان از یک فرهنگ لغت.
محدودیت ها و تنظیمات
هنگام ایجاد یک جدول تنظیمات زیر اعمال می شود:
این Join
- جداول موتور نمی تواند مورد استفاده قرار گیرد GLOBAL JOIN
عملیات.
این Join
- موتور اجازه می دهد تا استفاده کنید ارزشهای خبری عبارتند از: تنظیم در CREATE TABLE
بیانیه. و SELECT پرسوجو به کار میرود join_use_nulls
منم همینطور اگر شما متفاوت است join_use_nulls
تنظیمات, شما می توانید یک خطا پیوستن به جدول از. این بستگی به نوع پیوستن دارد. هنگام استفاده جوینت تابع, شما مجبور به استفاده از همان join_use_nulls
تنظیم در CRATE TABLE
و SELECT
اظهارات.
ذخیره سازی داده ها
Join
داده های جدول است که همیشه در رم واقع. در هنگام قرار دادن ردیف به یک جدول, کلیکهاوس می نویسد بلوک های داده را به دایرکتوری بر روی دیسک به طوری که می توان ترمیم زمانی که سرور راه اندازی مجدد.
اگر سرور نادرست راه اندازی مجدد بلوک داده ها بر روی دیسک از دست رفته یا صدمه دیده ممکن است. در این مورد ممکن است لازم باشد فایل را به صورت دستی با داده های خراب شده حذف کنید.