মাইএসকিউএলে কার্ডিনালিটি কী? সহজ, অ প্রযুক্তিগত ভাষায় ব্যাখ্যা করুন।
যদি কোনও সারণির সূচক বিশদটি কোনও ক্ষেত্রের কার্ডিনালিটি group_id
11 হিসাবে প্রদর্শন করে তবে তার অর্থ কী?
মাইএসকিউএলে কার্ডিনালিটি কী? সহজ, অ প্রযুক্তিগত ভাষায় ব্যাখ্যা করুন।
যদি কোনও সারণির সূচক বিশদটি কোনও ক্ষেত্রের কার্ডিনালিটি group_id
11 হিসাবে প্রদর্শন করে তবে তার অর্থ কী?
উত্তর:
সর্বোচ্চ কার্ডিনালিটি: সমস্ত মান অনন্য unique
নূন্যতম কার্ডিনালিটি: সমস্ত মান একই are
কিছু কলামগুলিকে হাই-কার্ডিনালিটি কলাম বলা হয় কারণ সেগুলিতে প্রতিবন্ধকতা রয়েছে (অনন্যের মতো) প্রতি সারিতে একই মান রাখার জন্য আপনাকে নিষেধ করে।
কার্ডিনালিটি এমন একটি সম্পত্তি যা ক্লাস্টার, ডেটা বাছাই এবং ডেটা অনুসন্ধানের ক্ষমতাকে প্রভাবিত করে। এটি ডিবিগুলিতে ক্যোয়ারী পরিকল্পনাকারীদের জন্য একটি গুরুত্বপূর্ণ পরিমাপ, এটি একটি হিউরিস্টিক যা তারা সর্বোত্তম পরিকল্পনা বেছে নিতে ব্যবহার করতে পারে।
উইকিপিডিয়া এসকিউএল তে কার্ডিনালিটির সংক্ষিপ্তসার জানিয়েছে :
ইন এসকিউএল (স্ট্রাকচার্ড ক্যোয়ারী ল্যাঙ্গুয়েজ) শব্দটি cardinality বোঝায় স্বতন্ত্রতা একটি একটি নির্দিষ্ট কলাম (অনুষঙ্গ) অন্তর্ভুক্ত তথ্য মূল্যবোধের ডাটাবেসের টেবিল । কার্ডিনালিটি যত কম হবে, একটি কলামে আরও নকল উপাদান। সুতরাং, সর্বনিম্ন সম্ভব কার্ডিনালিটি সহ একটি কলামে প্রতিটি সারিটির জন্য একই মান থাকবে। এসকিউএল ডাটাবেসগুলি প্রদত্ত ক্যোয়ারির অনুকূল কোয়েরি পরিকল্পনা নির্ধারণে সহায়তা করতে কার্ডিনালিটি ব্যবহার করে ।
এটি মূলত কামির সাথে লিঙ্কিত উইকিপিডিয়া নিবন্ধ অনুসারে একটি কলামের মানগুলির স্বতন্ত্রতার মাত্রার সাথে সম্পর্কিত।
কেন এটি বিবেচনা করা গুরুত্বপূর্ণ তা হ'ল এটি সূচীকরণ কৌশলকে প্রভাবিত করে। মাত্র ২ টি সম্ভাব্য মান সহ একটি নিম্ন কার্ডিনালিটি কলামের সূচীকরণের সামান্য পয়েন্ট থাকবে কারণ সূচকটি ব্যবহারের জন্য যথেষ্ট নির্বাচনী হবে না।
গাণিতিক ভাষায়, কার্ডিনালিয়ালিটি মানগুলির একটি সেটের মান গণনা। একটি সেট শুধুমাত্র অনন্য মান থাকতে পারে। একটি উদাহরণ সেট "এ" হবে।
"A" সেটটি হতে দিন: A = {1,2,3} - সেই সেটটির কার্ডিনালটি | 3 |
যদি "এ" সেট করা থাকে তবে 5 মান A = {10,21,33,42,57} থাকে, তবে কার্ডিনালিটি | 5 |
মাইএসকিএল-এর প্রসঙ্গে এর অর্থ কী, কোনও টেবিল কলামের কার্ডিনালিটিটি column কলামটির অনন্য মানের গণনা। আপনি যদি আপনার প্রাথমিক কী কলামটির উদাসীনতার দিকে নজর রাখছেন (যেমন, টেবিল.আইডি), তবে সেই কলামের কার্ডিনালটিটি আপনাকে জানাবে যে টেবিলের প্রতিটি সারিটির জন্য একটি অনন্য আইডি রয়েছে, সেই টেবিলটিতে কতগুলি সারি রয়েছে। এটির কত সারি রয়েছে তা সন্ধান করার জন্য আপনাকে কেবল সেই টেবিলে একটি "COUNT (*)" সঞ্চালন করতে হবে না, কেবল কার্ডিনালিটিটি দেখুন।
ম্যানুয়াল থেকে :
Cardinality
সূচকে অনন্য মানের সংখ্যার একটি অনুমান। এটি ANYYZ TABLE বা myisamchk -a চালিয়ে আপডেট হয়। কার্ডিনালিটিটি পূর্ণসংখ্যা হিসাবে সঞ্চিত পরিসংখ্যানের ভিত্তিতে গণনা করা হয়, সুতরাং মানটি ছোট টেবিলগুলির জন্যও অগত্যা সঠিক নয়। কার্ডিনালিটি যত বেশি হবে, মাইএসকিউএল সূচকগুলি ব্যবহার করার সুযোগটি তত বেশি।
CREATE TABLE `antest` (
`i` int(10) unsigned NOT NULL,
`c` char(80) default NULL,
KEY `i` (`i`),
KEY `c` (`c`,`i`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
mysql> select count(distinct c) from antest;
+-------------------+
| count(distinct c) |
+-------------------+
| 101 |
+-------------------+
1 row in set (0.36 sec)
mysql> select count(distinct i) from antest;
+-------------------+
| count(distinct i) |
+-------------------+
| 101 |
+-------------------+
1 row in set (0.20 sec)
mysql> select count(distinct i,c) from antest;
+---------------------+
| count(distinct i,c) |
+---------------------+
| 10201 |
+---------------------+
1 row in set (0.43 sec)
mysql> show index from antest;
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| antest | 1 | i | 1 | i | A | NULL | NULL | NULL | | BTREE | |
| antest | 1 | c | 1 | c | A | NULL | NULL | NULL | YES | BTREE | |
| antest | 1 | c | 2 | i | A | NULL | NULL | NULL | | BTREE | |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
3 rows in set (0.00 sec)
mysql> analyze table sys_users;
+--------------------------------+---------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+--------------------------------+---------+----------+----------+
| antest | analyze | status | OK |
+--------------------------------+---------+----------+----------+
1 row in set (0.01 sec)
mysql> show index from antest;
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| antest | 1 | i | 1 | i | A | 101 | NULL | NULL | | BTREE | |
| antest | 1 | c | 1 | c | A | 101 | NULL | NULL | YES | BTREE | |
| antest | 1 | c | 2 | i | A | 10240 | NULL | NULL | | BTREE | |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
3 rows in set (0.01 sec)