Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Buat tabel sementara di MySQL dengan indeks dari pilihan

Saya bergulat cukup lama dengan sintaks yang tepat untuk CREATE TEMPORARY TABLE SELECT. Setelah mengetahui beberapa hal, saya ingin berbagi jawaban dengan komunitas lainnya.

Informasi dasar tentang pernyataan tersebut tersedia di tautan MySQL berikut:

BUAT PILIHAN TABEL dan BUAT TABEL .

Kadang-kadang bisa menakutkan untuk menafsirkan spesifikasi. Karena kebanyakan orang belajar paling baik dari contoh, saya akan membagikan bagaimana saya membuat pernyataan kerja, dan bagaimana Anda dapat memodifikasinya agar berfungsi untuk Anda.

  1. Tambahkan beberapa indeks

    Pernyataan ini menunjukkan cara menambahkan beberapa indeks (perhatikan bahwa nama indeks - dalam huruf kecil - adalah opsional):

    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
    
  2. Tambahkan kunci utama baru :

    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
    
  3. Buat kolom tambahan

    Anda dapat membuat tabel baru dengan lebih banyak kolom daripada yang ditentukan dalam pernyataan SELECT. Tentukan kolom tambahan dalam definisi tabel. Kolom yang ditentukan dalam definisi tabel dan tidak ditemukan di pilih akan menjadi kolom pertama di tabel baru, diikuti oleh kolom yang disisipkan oleh pernyataan SELECT.

    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
    
  4. Mendefinisikan ulang tipe data untuk kolom dari SELECT

    Anda dapat mendefinisikan ulang tipe data kolom yang sedang DIPILIH. Pada contoh di bawah, tag kolom adalah MEDIUMINT di core.my_big_table dan saya mendefinisikan ulang menjadi BIGINT di core.my_tmp_table.

    CREATE TEMPORARY TABLE core.my_tmp_table 
    (tag BIGINT,
    my_time DATETIME,  
    INDEX my_unique_index_name (tag) )
    SELECT * FROM core.my_big_table
    
  5. Definisi bidang lanjutan selama pembuatan

    Semua definisi kolom biasa tersedia seperti saat Anda membuat tabel normal. Contoh:

    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
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL memberikan kesalahan membaca ECONNRESET setelah waktu idle di server node.js

  2. Bagaimana saya bisa memasukkan data NULL ke database MySQL dengan Python?

  3. Memasukkan JSON ke MySQL menggunakan Python

  4. Kesalahan saat mengganti nama kolom di MySQL

  5. Mencari Pencarian Teks Lengkap Sederhana? Coba MySQL InnoDB + CakePHP dengan Word Stemming