মাইএসকিউএলে কার্ডিনালিটি কী?


106

মাইএসকিউএলে কার্ডিনালিটি কী? সহজ, অ প্রযুক্তিগত ভাষায় ব্যাখ্যা করুন।

যদি কোনও সারণির সূচক বিশদটি কোনও ক্ষেত্রের কার্ডিনালিটি group_id11 হিসাবে প্রদর্শন করে তবে তার অর্থ কী?

উত্তর:


120

সর্বোচ্চ কার্ডিনালিটি: সমস্ত মান অনন্য unique

নূন্যতম কার্ডিনালিটি: সমস্ত মান একই are

কিছু কলামগুলিকে হাই-কার্ডিনালিটি কলাম বলা হয় কারণ সেগুলিতে প্রতিবন্ধকতা রয়েছে (অনন্যের মতো) প্রতি সারিতে একই মান রাখার জন্য আপনাকে নিষেধ করে।

কার্ডিনালিটি এমন একটি সম্পত্তি যা ক্লাস্টার, ডেটা বাছাই এবং ডেটা অনুসন্ধানের ক্ষমতাকে প্রভাবিত করে। এটি ডিবিগুলিতে ক্যোয়ারী পরিকল্পনাকারীদের জন্য একটি গুরুত্বপূর্ণ পরিমাপ, এটি একটি হিউরিস্টিক যা তারা সর্বোত্তম পরিকল্পনা বেছে নিতে ব্যবহার করতে পারে।


10
বড় শব্দগুলির জন্য এই ফেটিশটির সাথে কী What's "স্বাতন্ত্র্য" ঠিক কাজ করবে তাই না?
পেসারিয়ার

8
@ পেসারিয়র: হ্যাঁ, যদিও আমি মনে করি যে ডাটাবেসে কাজ করা লোকেরা ইতিমধ্যে রিলেশনাল থিওরি, সেট থিওরি এবং গণিতের সাথে যথেষ্ট পরিচিত। এবং তারা সেটটি তত্ত্ব থেকে এই শব্দটি ধার করেছিলেন: en.m.wikedia.org/wiki/Cardinality
আলেকজান্ডার টর্সলিং

27
@ পেসারিয়র, স্বাতন্ত্র্য একটি বড় শব্দ (1 দ্বারা)
ড্র হয়েছে

4
@ ড্র,;) লেক্সেমের সাথে তুলনা না করলে নয়।
পেসারিয়ার

8
@ পেসারিয়ার লেক্সেম? "ডিসস্টিন্টনেস" সেখানেও কাজ করবে, তাই না? ;) যদি আমরা যথেষ্ট পরিশ্রম করি তবে আমরা পুরো ভাষাটি মাত্র 1 শব্দে কমাতে এবং বিভিন্ন পুনরাবৃত্তি এবং বিরতি দিয়ে নিজেকে প্রকাশ করতে পারি।
জেসন

34

উইকিপিডিয়া এসকিউএল তে কার্ডিনালিটির সংক্ষিপ্তসার জানিয়েছে :

ইন এসকিউএল (স্ট্রাকচার্ড ক্যোয়ারী ল্যাঙ্গুয়েজ) শব্দটি cardinality বোঝায় স্বতন্ত্রতা একটি একটি নির্দিষ্ট কলাম (অনুষঙ্গ) অন্তর্ভুক্ত তথ্য মূল্যবোধের ডাটাবেসের টেবিল । কার্ডিনালিটি যত কম হবে, একটি কলামে আরও নকল উপাদান। সুতরাং, সর্বনিম্ন সম্ভব কার্ডিনালিটি সহ একটি কলামে প্রতিটি সারিটির জন্য একই মান থাকবে। এসকিউএল ডাটাবেসগুলি প্রদত্ত ক্যোয়ারির অনুকূল কোয়েরি পরিকল্পনা নির্ধারণে সহায়তা করতে কার্ডিনালিটি ব্যবহার করে ।


25

এটি সূচকে অনন্য মানের সংখ্যার একটি অনুমান।

একটি একক প্রাথমিক কী কলাম সহ একটি টেবিলের জন্য, কার্ডিনালিটিটি সাধারণত টেবিলের সারি সংখ্যার সমান হওয়া উচিত।

আরও তথ্য


15

এটি মূলত কামির সাথে লিঙ্কিত উইকিপিডিয়া নিবন্ধ অনুসারে একটি কলামের মানগুলির স্বতন্ত্রতার মাত্রার সাথে সম্পর্কিত।

কেন এটি বিবেচনা করা গুরুত্বপূর্ণ তা হ'ল এটি সূচীকরণ কৌশলকে প্রভাবিত করে। মাত্র ২ টি সম্ভাব্য মান সহ একটি নিম্ন কার্ডিনালিটি কলামের সূচীকরণের সামান্য পয়েন্ট থাকবে কারণ সূচকটি ব্যবহারের জন্য যথেষ্ট নির্বাচনী হবে না।


4
দ্বিতীয় অনুচ্ছেদটি গুরুত্বপূর্ণ যদি আপনি কোনও কলামকে সূচকে পরিণত করার সময় এটি বোঝার চেষ্টা করেন।
ভিএমসি

10

উচ্চতর কার্ডিনালিটি, সারিগুলির পার্থক্য আরও ভাল। পার্থক্যটি ডেটা পেতে কম শাখাগুলি নেভিগেট করতে সহায়তা করে।

সুতরাং উচ্চতর করুণতার মানগুলির অর্থ:

  • পড়ার প্রশ্নগুলির আরও ভাল পারফরম্যান্স;
  • বড় ডাটাবেস আকার;
  • লেখার প্রশ্নগুলির আরও খারাপ কার্য সম্পাদন, কারণ লুকানো সূচী ডেটা আপডেট করা হচ্ছে।

7

গাণিতিক ভাষায়, কার্ডিনালিয়ালিটি মানগুলির একটি সেটের মান গণনা। একটি সেট শুধুমাত্র অনন্য মান থাকতে পারে। একটি উদাহরণ সেট "এ" হবে।

"A" সেটটি হতে দিন: A = {1,2,3} - সেই সেটটির কার্ডিনালটি | 3 |

যদি "এ" সেট করা থাকে তবে 5 মান A = ​​{10,21,33,42,57} থাকে, তবে কার্ডিনালিটি | 5 |

মাইএসকিএল-এর প্রসঙ্গে এর অর্থ কী, কোনও টেবিল কলামের কার্ডিনালিটিটি column কলামটির অনন্য মানের গণনা। আপনি যদি আপনার প্রাথমিক কী কলামটির উদাসীনতার দিকে নজর রাখছেন (যেমন, টেবিল.আইডি), তবে সেই কলামের কার্ডিনালটিটি আপনাকে জানাবে যে টেবিলের প্রতিটি সারিটির জন্য একটি অনন্য আইডি রয়েছে, সেই টেবিলটিতে কতগুলি সারি রয়েছে। এটির কত সারি রয়েছে তা সন্ধান করার জন্য আপনাকে কেবল সেই টেবিলে একটি "COUNT (*)" সঞ্চালন করতে হবে না, কেবল কার্ডিনালিটিটি দেখুন।


4

একটি সহজ উপায়ে, কার্ডিনালিটি হ'ল টেবিলের মধ্যে সারি বা টিপলগুলির সংখ্যা। কলামের সংখ্যা বলা হয় "ডিগ্রি"


4

ম্যানুয়াল থেকে :

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)

1
এই উত্তরে শূন্য সামগ্রী রয়েছে যা আপনি নিজে লিখেছেন, এটি মাইএসকিউএল ম্যানুয়াল এবং আপনি যে ব্লগ পোস্টের সাথে লিঙ্ক করেছেন তা কেবলমাত্র একটি কোলাজ। এবং এর উপরে ভয়াবহভাবে ফর্ম্যাট করা।
সিগুজা

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