Apa perbedaan utama antara INSERT INTO table VALUES ..
dan INSERT INTO table SET
?
Contoh:
INSERT INTO table (a, b, c) VALUES (1,2,3)
INSERT INTO table SET a=1, b=2, c=3
Dan bagaimana dengan kinerja keduanya?
sql
mysql
performance
Irmantas
sumber
sumber
INSERT INTO table SET
tidak standar. Tampaknya jauh lebih jelas. Saya kira saya tetap harus menggunakanINSERT INTO table ([column name, column name b]) VALUES (['value a', 'value b'])
sintaks untuk menyelamatkan diri dari masalah jika saya porting ke Postgres.Jawaban:
Sejauh yang saya tahu, kedua sintaksinya sama. Yang pertama adalah standar SQL, yang kedua adalah ekstensi MySQL.
Jadi mereka harus setara dengan kinerja bijaksana.
http://dev.mysql.com/doc/refman/5.6/en/insert.html mengatakan:
sumber
INSERT INTO table SET
? Apakah ini mungkin?Saya pikir ekstensi ini dimaksudkan untuk memungkinkan sintaksis yang sama untuk memasukkan dan memperbarui. Di Oracle, trik sintaksis yang serupa adalah:
sumber
INSERT ... SET ...
danINSERT ... VALUES ...
. Untuk fitur Anda memiliki kode yang lebih pendek, lebih cepat untuk menulis, peningkatan keterbacaan, dan penghapusan kesalahan ketik yang disebabkan oleh pencampuran urutan kolom Anda saat menulisVALUES
klausa Anda . Perasaan saya memberi tahu saya bahwa di internet kebaikan melebihi kejahatan, tetapi penilaian Anda mungkin berbeda.Karena sintaksinya sama (dalam MySQL bagaimanapun), saya lebih suka
INSERT INTO table SET x=1, y=2
sintaksisnya, karena lebih mudah untuk memodifikasi dan lebih mudah untuk menangkap kesalahan dalam pernyataan, terutama ketika memasukkan banyak kolom. Jika Anda harus memasukkan 10 atau 15 kolom atau lebih, sangat mudah untuk mencampur sesuatu menggunakan(x, y) VALUES (1,2)
sintaks, menurut saya.Jika portabilitas antara standar SQL yang berbeda adalah masalah, maka mungkin
INSERT INTO table (x, y) VALUES (1,2)
akan lebih disukai.Dan jika Anda ingin menyisipkan banyak rekaman dalam satu permintaan, sepertinya tidak ada
INSERT INTO ... SET
sintaks tidak akan berfungsi, sedangkan yang lain akan. Namun dalam kebanyakan kasus praktis, Anda mengulangi serangkaian catatan untuk melakukan sisipan, meskipun mungkin ada beberapa kasus di mana mungkin membangun satu kueri besar untuk menyisipkan sekelompok baris ke tabel dalam satu kueri, vs. kueri untuk setiap baris, mungkin memiliki peningkatan kinerja. Benar-benar tidak tahu.sumber