Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Utwórz tabelę tymczasową w MySQL z indeksem z wybranych

Dość długo zmagałem się z właściwą składnią CREATE TEMPORARY TABLE SELECT. Po zrozumieniu kilku rzeczy chciałem podzielić się odpowiedziami z resztą społeczności.

Podstawowe informacje o oświadczeniu są dostępne pod następującymi linkami MySQL:

CREATE TABLE SELECT i CREATE TABLE .

Czasami interpretacja specyfikacji może być zniechęcająca. Ponieważ większość ludzi najlepiej uczy się na przykładach, podzielę się tym, jak stworzyłem oświadczenie robocze i jak możesz je zmodyfikować, aby działały dla Ciebie.

  1. Dodaj wiele indeksów

    To stwierdzenie pokazuje, jak dodać wiele indeksów (zwróć uwagę, że nazwy indeksów - pisane małymi literami - są opcjonalne):

    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. Dodaj nowy klucz podstawowy :

    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. Utwórz dodatkowe kolumny

    Możesz utworzyć nową tabelę z większą liczbą kolumn niż określono w instrukcji SELECT. Określ dodatkową kolumnę w definicji tabeli. Kolumny określone w definicji tabeli i nie znalezione w select będą pierwszymi kolumnami w nowej tabeli, a następnie kolumnami wstawionymi przez instrukcję 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. Ponowne definiowanie typów danych dla kolumn z SELECT

    Możesz przedefiniować typ danych kolumny, która jest WYBIERANA. W poniższym przykładzie tag kolumny to MEDIUMINT w core.my_big_table i zmieniam go na BIGINT w 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. Zaawansowane definicje pól podczas tworzenia

    Wszystkie zwykłe definicje kolumn są dostępne tak, jak podczas tworzenia normalnej tabeli. Przykład:

    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. Jak wdrożyć funkcję Zapamiętaj mnie?

  2. Użytkownicy Wordpress i usermeta - łączenie wielu wierszy w jednej tabeli z jednym wierszem w innej tabeli

  3. Indeksy wielojęzyczne z Laravel Scout i Algolia

  4. Facebook nie może zeskrobać metadanych po przeniesieniu Wordpressa na nowy serwer

  5. Wybieranie losowych wierszy za pomocą MySQL