হয়তো আপনার উদ্দেশ্য দুটি উদ্দেশ্য একত্রিত করা উচিত। কেন ???
আসুন সেই টেবিলটি ব্যবহার করুন (মাইএসকিউএল-উপভাষা)
CREATE TABLE mydata
(
id int not null auto_increment
firstname varchar(16) not null,
lastname varchar(16) not null,
zipcode char(5) not null,
...
deleted tinyint not null default 0
KEY (deleted,id),
KEY (deleted,lastname,firstname,id),
KEY (deleted,zipcode,id),
KEY (lastname,firstname),
KEY (zipcode),
PRIMARY KEY (id)
);
দয়া করে মনে রাখবেন যে, প্রাইমারী কী ব্যতীত আপনার তৈরি প্রতিটি সূচি deleted
পতাকাটির আগে এবং শেষে সমাপ্ত হওয়া উচিতid
।
সমাধিক্ষেত্র টেবিল তৈরি করা যাক
CREATE TABLE mytomb SELECT id FROM mydata WHERE 1=2;
ALTER TABLE mytomb ADD PRIMARY KEY (id);
যদি আপনার টেবিলটিতে ইতিমধ্যে একটি deleted
পতাকা থাকে তবে আপনি টমমস্টোন টেবিলটি তৈরি করতে পারেন
INSERT INTO mytomb SELECT id FROM mydata WHERE deleted = 1;
ঠিক আছে এখন ডেটা এবং সমাধিপাথর preped হয়। আপনি কীভাবে মুছে ফেলবেন?
ধরা যাক আপনি 07305 জিপকোডের প্রতিটি লোককে মুছে ফেলছেন। আপনি নিম্নলিখিত চালাতে হবে:
INSERT IGNORE INTO mytomb SELECT id FROM mydata WHERE deleted=0 AND zipcode='07305';
UPDATE mydata SET deleted=1 WHERE deleted=0 AND zipcode='07305';
ঠিক আছে, এটি কোনওভাবেই আপনি এটিকে দেখছেন না বলে অনেকগুলি ওভারহেডের মতো মনে হয়।
এখন, আপনি কি মুছে ফেলা সমস্ত ডেটা দেখতে চান? এখানে দুটি ভিন্ন উপায় রয়েছে:
SELECT * FROM mydata WHERE deleted=1;
SELECT B.* FROM mytomb A INNER JOIN mydata B USING (id);
মাইটাম্বের আইডির সংখ্যা যদি মায়াডাটার সারি গণনার 5% এর বেশি হয় তবে এটি পূর্ণ টেবিল স্ক্যান। অন্যথায়, প্রতিটি সারির জন্য একটি অনুসন্ধানের সাথে একটি সূচক স্ক্যান। এই ক্ষেত্রে কোনও মানদণ্ড নোট করুন। ব্যাখ্যা পরিকল্পনা দেখুন।
এখন, আপনি কি জিপকোড 07304 এর প্রত্যেক ব্যক্তিকে দেখতে চান? এখানে দুটি ভিন্ন উপায় রয়েছে:
SELECT * FROM mydata WHERE deleted=1 AND zipcode='07304';
SELECT A.* FROM mydata A LEFT JOIN mytomb B USING (id) WHERE B.id IS NULL AND A.zipcode='07304'
ভর মুছে ফেলা সম্পর্কে কীভাবে? এখানে দুটি ভিন্ন উপায় রয়েছে:
DELETE FROM mydata WHERE deleted=1;
DELETE B.* FROM mytomb A INNER JOIN mydata B USING (id); DELETE FROM mytomb;
উপসংহার
এখন, আমি উভয় পদ্ধতি রাখার জন্য বলছি না। সময়ের সাথে এটি করার মাধ্যমে প্রকাশিত হয় সামগ্রিক পরিচালনার ক্ষেত্রে কোন পদ্ধতিটি দ্রুত। লাইভ ডেটা জিজ্ঞাসা করার জন্য, মুছে ফেলা ডেটা অনুসন্ধান করার জন্য এবং গণ মুছে ফেলার জন্য কোন মানদণ্ড আপনার পক্ষে সেরা কাজ করবে তা আপনাকে অবশ্যই স্থির করতে হবে।