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

Sisipan tabel Temp MySQL

mengerjakan apa yang ditulis Code-Monk, pertimbangkan hal berikut:

drop procedure if exists uspK;
DELIMITER $$
create procedure uspK ()
BEGIN
    drop temporary table if exists temp; -- could be some other random structure residue

    create temporary table temp
    SELECT aID, bID
    FROM tags
    WHERE placeID = "abc" AND tagID = "def";

    -- use the temp table somehow
    -- ...
    -- ...
    -- ...

    drop temporary table temp; -- otherwise it survives the stored proc call
END
$$ -- signify end of block
DELIMITER ; -- reset to default delimiter

Prosedur Pengujian Tersimpan

call uspK(); -- test it, no warnings on edge conditions

Apa yang tidak boleh dilakukan

Seseorang akan tidak menemukan banyak keberuntungan dengan berikut. Jika Anda berpikir demikian, jalankan beberapa kali;

drop procedure if exists uspK;
DELIMITER $$
create procedure uspK ()
BEGIN
    -- drop temporary table if exists temp;

    create temporary table if not exists temp
    SELECT aID, bID
    FROM tags
    WHERE placeID = "abc" AND tagID = "def";

    -- use the temp table somehow
    -- ...
    -- ...
    -- ...

    -- drop temporary table temp; -- otherwise it survives the stored proc call
END
$$ -- signify end of block
DELIMITER ; -- reset to default delimiter

karena create temporary table if not exists temp rapuh

Komentar Umum

Seseorang tidak boleh memulai menulis procs yang tersimpan sampai agak fasih pada topik sederhana DELIMITERS. Tulis tentang mereka di bagian di sini disebut Pembatas . Hanya berharap untuk mencegah Anda membuang waktu yang tidak perlu untuk hal sederhana seperti itu, daripada membuang banyak waktu debug.

Juga, di sini dalam pertanyaan Anda, serta dalam referensi itu, ingatlah bahwa pembuatan tabel adalah DDL yang bisa memiliki persentase besar dari keseluruhan profil (kinerja). Ini memperlambat proc dibandingkan menggunakan tabel yang sudah ada sebelumnya. Orang mungkin berpikir panggilan itu instan, tetapi tidak. Dengan demikian, untuk kinerja, menggunakan tabel yang sudah ada sebelumnya dengan hasil yang dimasukkan ke dalam rowId tersegmentasi jauh lebih cepat daripada menahan overhead DDL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php mysql menyimpan jeda baris di area teks dalam database

  2. Bagaimana cara mengubah Collation Kolom tanpa kehilangan atau mengubah data?

  3. MySQL Store Image BLOB Kinerja Praktik Buruk

  4. Bisakah saya menghapus transien di tabel wp_options dari instalasi WordPress saya?

  5. MySQL Untuk Visual Studio 2012/2013