CREATE TEMPORARY TABLE SELECT için uygun sözdizimi ile epeyce mücadele ettim. Birkaç şeyi çözdükten sonra, cevapları topluluğun geri kalanıyla paylaşmak istedim.
İfade hakkındaki temel bilgiler aşağıdaki MySQL bağlantılarında mevcuttur:
TABLO SEÇİMİ OLUŞTURUN ve TABLO OLUŞTURUN .
Bazen özellikleri yorumlamak göz korkutucu olabilir. Çoğu insan en iyi örneklerden öğrendiğinden, bir çalışma bildirimini nasıl oluşturduğumu ve işinize yarayacak şekilde bunu nasıl değiştirebileceğinizi paylaşacağım.
Birden çok dizin ekle
Bu ifade, birden çok dizinin nasıl ekleneceğini gösterir (küçük harflerle dizin adlarının isteğe bağlı olduğunu unutmayın):
CREATE TEMPORARY TABLE core.my_tmp_table
(INDEX my_index_name (tag, time), UNIQUE my_unique_index_name (order_number))
SELECT * FROM core.my_big_table
WHERE my_val = 1
Yeni bir birincil anahtar ekleyin :
CREATE TEMPORARY TABLE core.my_tmp_table
(PRIMARY KEY my_pkey (order_number),
INDEX cmpd_key (user_id, time))
SELECT * FROM core.my_big_table
Ek sütunlar oluşturun
SELECT deyiminde belirtilenden daha fazla sütuna sahip yeni bir tablo oluşturabilirsiniz. Tablo tanımında ek sütunu belirtin. Tablo tanımında belirtilen ve select içinde bulunmayan sütunlar, yeni tablodaki ilk sütunlar ve ardından SELECT deyimi tarafından eklenen sütunlar olacaktır.
CREATE TEMPORARY TABLE core.my_tmp_table
(my_new_id BIGINT NOT NULL AUTO_INCREMENT,
PRIMARY KEY my_pkey (my_new_id), INDEX my_unique_index_name (invoice_number))
SELECT * FROM core.my_big_table
SELECT'ten sütunlar için veri türlerini yeniden tanımlama
SEÇİLEN bir sütunun veri türünü yeniden tanımlayabilirsiniz. Aşağıdaki örnekte, sütun etiketi core.my_big_table'da bir ORTA ve ben core.my_tmp_table'da onu BIGINT olarak yeniden tanımlıyorum.
CREATE TEMPORARY TABLE core.my_tmp_table
(tag BIGINT,
my_time DATETIME,
INDEX my_unique_index_name (tag) )
SELECT * FROM core.my_big_table
Oluşturma sırasında gelişmiş alan tanımları
Normal bir tablo oluşturduğunuzdaki gibi tüm olağan sütun tanımları mevcuttur. Misal:
CREATE TEMPORARY TABLE core.my_tmp_table
(id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
value BIGINT UNSIGNED NOT NULL DEFAULT 0 UNIQUE,
location VARCHAR(20) DEFAULT "NEEDS TO BE SET",
country CHAR(2) DEFAULT "XX" COMMENT "Two-letter country code",
INDEX my_index_name (location))
ENGINE=MyISAM
SELECT * FROM core.my_big_table