Bir tabloya girilmesi gereken 1-çok sayıda kayıt var. Bunu bir sorguda yapmanın en iyi yolu nedir? Sadece bir döngü oluşturmalı ve yineleme başına bir kayıt eklemeli miyim? Yoksa daha iyi bir yol var mı?
Bir tabloya girilmesi gereken 1-çok sayıda kayıt var. Bunu bir sorguda yapmanın en iyi yolu nedir? Sadece bir döngü oluşturmalı ve yineleme başına bir kayıt eklemeli miyim? Yoksa daha iyi bir yol var mı?
Yanıtlar:
Gönderen MySQL kılavuzuna
VALUES sözdizimini kullanan INSERT deyimleri birden çok satır ekleyebilir. Bunu yapmak için, her biri parantez içine alınmış ve virgülle ayrılmış birden çok sütun değeri listesi ekleyin. Misal:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
max_allowed_packet
Çoğu zaman, bir MySQL istemcisinde çalışmıyorsunuz ve uygun API'yı kullanarak ekleri toplu olarak kullanmalısınız.
Örneğin JDBC'de:
connection con.setAutoCommit(false);
PreparedStatement prepStmt = con.prepareStatement("UPDATE DEPT SET MGRNO=? WHERE DEPTNO=?");
prepStmt.setString(1,mgrnum1);
prepStmt.setString(2,deptnum1);
prepStmt.addBatch();
prepStmt.setString(1,mgrnum2);
prepStmt.setString(2,deptnum2);
prepStmt.addBatch();
int [] numUpdates=prepStmt.executeBatch();
Insert into table(col1,col2) select col1,col2 from table_2;
Lütfen INSERT Bildirimi hakkındaki MySQL belgelerine bakın
insert into select from
performansa ne dersin ? toplu ekleme kadar hızlı mı?
Veri yükleme sorgusu çok daha iyi bir seçenektir, ancak godaddy gibi bazı sunucular paylaşılan barındırmada bu seçeneği kısıtlar, bu nedenle yalnızca iki seçenek kaldı, her yineleme veya toplu ekleme için kayıt ekleyin, ancak sorgunuz bunu aşarsa toplu ekleme karakter sınırlaması vardır mysql'de ayarlanan karakter sayısı daha sonra sorgunuz kilitlenir, Bu yüzden toplu ekleme ile parçalar halinde veri eklemenizi öneririz, bu veritabanı ile kurulan bağlantı sayısını en aza indirir.
LOAD DATA LOCAL INFILE '/users/name/txt.file'
mysql aynı anda birden çok satır eklemenizi sağlar INSERT manual
INSERT
bunu doğal olarak destekliyor !