Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tạo một bảng tạm thời trong MySQL với một chỉ mục từ một lựa chọn

Tôi đã vật lộn khá lâu với cú pháp thích hợp cho CHỌN TẠM THỜI BẢNG TẠM THỜI. Sau khi tìm ra một vài điều, tôi muốn chia sẻ câu trả lời với những người còn lại trong cộng đồng.

Thông tin cơ bản về câu lệnh có sẵn tại các liên kết MySQL sau:

CHỌN TẠO BẢNG TẠO BẢNG .

Đôi khi, việc giải thích thông số kỹ thuật có thể gây khó khăn. Vì hầu hết mọi người học tốt nhất từ ​​các ví dụ, tôi sẽ chia sẻ cách tôi đã tạo một câu lệnh hoạt động và cách bạn có thể sửa đổi nó để phù hợp với bạn.

  1. Thêm nhiều chỉ mục

    Câu lệnh này chỉ ra cách thêm nhiều chỉ mục (lưu ý rằng tên chỉ mục - trong trường hợp viết thường - là tùy chọ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
    
  2. Thêm khóa chính mới :

    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. Tạo cột bổ sung

    Bạn có thể tạo một bảng mới với nhiều cột hơn số cột được chỉ định trong câu lệnh SELECT. Chỉ định cột bổ sung trong định nghĩa bảng. Các cột được chỉ định trong định nghĩa bảng và không được tìm thấy trong lựa chọn sẽ là cột đầu tiên trong bảng mới, tiếp theo là các cột được chèn bởi câu lệnh 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. Xác định lại kiểu dữ liệu cho các cột từ SELECT

    Bạn có thể xác định lại kiểu dữ liệu của một cột đang được CHỌN. Trong ví dụ bên dưới, thẻ cột là MEDIUMINT trong core.my_big_table và tôi đang định nghĩa lại nó thành BIGINT trong 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. Định nghĩa trường nâng cao trong khi tạo

    Tất cả các định nghĩa cột thông thường đều có sẵn như khi bạn tạo một bảng bình thường. Ví dụ:

    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. # 1139 - Gặp lỗi 'toán hạng lặp lại-toán tử không hợp lệ' từ regexp

  2. Làm thế nào để xử lý lỗi cho các mục nhập trùng lặp?

  3. Truy vấn MySQL để tìm kiếm nhiều thuộc tính và value_id

  4. MySQL - Phiên bản MySQL này chưa hỗ trợ 'LIMIT &IN / ALL / ANY / SOME truy vấn con

  5. Làm thế nào để ngăn chặn thời gian chờ kết nối cho các lần nhập MySQL lớn