মাইএসকিএলে একাধিক সারি .োকানো হচ্ছে


349

আমি একবারে একাধিক সারি প্রবেশ করিয়ে দিলে কি ডাটাবেস ক্যোয়ারী দ্রুত হয়:

মত

INSERT....

UNION

INSERT....

UNION

(আমাকে 2-3000 সারিগুলির মতো সন্নিবেশ করা দরকার)


8
ইউনিয়ন নির্বাচনের জন্য।
জ্যাকব

1
সারিগুলি কীভাবে আসছে? আপনি কি সরাসরি মাইএসকিউএল ক্যোয়ারী ব্রাউজারে এসকিউএল লিখছেন বা পিএইচপি বা সি # বা অন্য কোনও কিছু থেকে ব্যবহার করছেন। যদি আপনি পরবর্তী ক্ষেত্রে মাপসই হন তবে নিম্নলিখিত লিঙ্কগুলি পরীক্ষা করুন: একাধিক সারি সহ 100k রেকর্ডস দ্রুত সন্নিবেশ
করানোর

উত্তর:


1176

INSERTVALUESবাক্য যা সিনট্যাক্স ব্যবহার করে তা একাধিক সারি সন্নিবেশ করতে পারে। এটি করার জন্য, কলাম মানগুলির একাধিক তালিকাগুলি অন্তর্ভুক্ত করুন, প্রত্যেকটি বন্ধনীতে আবদ্ধ এবং কমা দ্বারা পৃথক।

উদাহরণ:

INSERT INTO tbl_name
    (a,b,c)
VALUES
    (1,2,3),
    (4,5,6),
    (7,8,9);

সূত্র


@RPK। আমি আপনার সাথে একমত কিন্তু আমি তার ডেটা উত্স জানি না। আমি ইতিমধ্যে লিখেছি, যদি তার একটি ফাইল থাকে তবে আমি কুলারিসের পরামর্শ মতো লোড ডেটা সিনট্যাক্স ব্যবহার করব। :)
নিকোলা কোসু

এটি ব্যবহার করাও সম্ভব INSERT INTO Table SELECT 1, '14/05/2012', 3 UNION SELECT 2, '05/14/2012', 3। অবশ্যই, এটি কেবল ভাল beোকানো মানগুলি বিভিন্ন টেবিল থেকে আসছে।
জোহর পেলড

72
সহায়ক রেফারেন্স, কারণ মাঝে মাঝে আমি কেবল সহজ বাক্য গঠন ভুলে যাই।
ক্যাপ্টেন হাইপারটেক্সট

একটি, খ এবং সি এখানে সারিগুলির সামগ্রী সংরক্ষণ করছে অস্থায়ী পরিবর্তনগুলি?
লিয়ালো

3
@ লিলিও না, তারা একই সারণিতে মানগুলি সারণিতে সারণী কলামের নাম।
বিটলজুইস

60

কোনও পাঠ্য-ফাইলে আপনার ডেটা থাকলে আপনি লড ডেটা ইনফিল ব্যবহার করতে পারেন ।

পাঠ্য ফাইল থেকে কোনও টেবিলটি লোড করার সময়, লোড ডেটা ইনফাইল ব্যবহার করুন। এটি সাধারণত INSERT বিবৃতি ব্যবহারের চেয়ে 20 গুণ বেশি গতিযুক্ত।

INSERT বিবৃতি অপ্টিমাইজ করা

উপরের লিঙ্কটিতে কীভাবে আপনার সন্নিবেশ বিবৃতিগুলিকে গতি বাড়ানো যায় তার আরও টিপস পেতে পারেন।


3
নকল রেকর্ড সম্পর্কে কি?
মাত্তেও

2
@ মাত্তিও সদৃশগুলি আপনার সংজ্ঞায়িত স্কিমার ভিত্তিতে ডাটাবেস দ্বারা সন্নিবেশ বা বাতিল করা হবে rejected
ankush981

মাইএসকিএল মাল্টিক্যুরি ব্যবহার করুন
ফ্রান্সিসকো ইয়েপেস বারেরা

1
দ্বিতীয় লিঙ্ক
404.

1
ভাঙ্গা লিঙ্ক "সন্নিবেশ বিবৃতিগুলির গতি" এখন কভার করা হয়েছে: INSERT বিবৃতিগুলির অনুকূলকরণ
কেনেথ এম। কোলানো

27
BEGIN;
INSERT INTO test_b (price_sum)
  SELECT price
  FROM   test_a;
INSERT INTO test_c (price_summ) 
  SELECT price
FROM   test_a;
COMMIT;

3
এটি আরও উন্নততর দাবিদার, এটি ব্যবহার করে আপনি অন্যান্য টেবিল থেকে প্রাপ্ত তথ্য বাল্ক সন্নিবেশ করতে পারেন
নোভাস্টর্ম

4
এই কোডের
টুকরোটিতে

0

এটি একটি: মি (বহু থেকে বহু সম্পর্ক) টেবিলের সাথে ব্যবহারের জন্য প্রস্তুত একটি পিএইচপি সমাধান:

// get data
$table_1 = get_table_1_rows();
$table_2_fk_id = 123;

// prepare first part of the query (before values)
$query = "INSERT INTO `table` (
   `table_1_fk_id`,
   `table_2_fk_id`,
   `insert_date`
) VALUES ";

//loop the table 1 to get all foreign keys and put it in array
foreach($table_1 as $row) {
    $query_values[] = "(".$row["table_1_pk_id"].", $table_2_fk_id, NOW())";
}

// Implode the query values array with a coma and execute the query.
$db->query($query . implode(',',$query_values));

ইমপ্লোড () ব্যবহার করা "শেষ চরিত্র" সমস্যাটি ঘটাতে পারে তবে এটি ওভারহেডের একটি বিশাল মেমরি তৈরি করে। তিনি 3000 সারি চেয়েছিলেন, কল করুন প্রতিটি সারিতে 1kb ডেটা রয়েছে, এটি ইতিমধ্যে 3MB কাঁচা ডেটা রয়েছে। অ্যারেটি ইতিমধ্যে $ টেবিল_1 থেকে আরও 30MB গ্রহন করেছে তাই স্ক্রিপ্টটি 60MB ব্যবহার করে মেমরিটি 30MB নেবে। কেবল বলছি, অন্যথায় এটি একটি ভাল সমাধান
জন

এটা আমার পরিস্থিতির জন্য দরকারী।
বিলাল Şিমিক

-11
// db table name / blog_post / menu /  site_title
// Insert into Table (column names separated with comma)
$sql = "INSERT INTO product_cate (site_title, sub_title) 
  VALUES ('$site_title', '$sub_title')";

// db table name / blog_post / menu /  site_title
// Insert into Table (column names separated with comma)
$sql = "INSERT INTO menu (menu_title, sub_menu)
  VALUES ('$menu_title', '$sub_menu', )";

// db table name / blog_post /  menu /  site_title
// Insert into Table (column names separated with comma)
$sql = "INSERT INTO blog_post (post_title, post_des, post_img)
  VALUES ('$post_title ', '$post_des', '$post_img')";

এই প্রতিক্রিয়াটির বিভ্রান্তি বাদ দিয়ে, আপনি পিএইচপি ব্যবহার করছেন বলে ধরে নিও যে আপনি এসকিউএল ইঞ্জেকশনের পক্ষেও ঝুঁকিপূর্ণ হতে পারেন।
আলট্রাফেজ

2
1. আপনার এসকিউএল কোডটিতে বাগ রয়েছে। ২. পরবর্তী $ বর্গমূল্যের মানটি পূর্ববর্তী $ বর্গমূল্যের মানকে প্রতিস্থাপন করবে।
মারওয়ান সেলিম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.