কম্পিউটার টিউটোরিয়াল

MySQL-এ প্রাইমারি কি অটো-ইনক্রিমেন্টকে অনেক বড় করা (BIGINT)

MySQL-এ প্রাইমারি কি অটো-ইনক্রিমেন্টের সর্বোচ্চ মান বড় করতে BIGINT ডেটা টাইপ ব্যবহার করুন। এটি আনলিমিটেড নয়, কিন্তু খুব বড় রেঞ্জ সাপোর্ট করে।

সিনট্যাক্স

yourColumnName BIGINT NOT NULL AUTO_INCREMENT;

BIGINT রেঞ্জ

  • SIGNED: -9,223,372,036,854,775,808 থেকে 9,223,372,036,854,775,807
  • UNSIGNED: 0 থেকে 18,446,744,073,709,551,615

উদাহরণ দিয়ে বুঝি

টেবিল তৈরি করুন:

mysql> CREATE TABLE LargeAutoIncrement (
    -> Id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY
    -> );
Query OK, 0 rows affected (0.78 sec)

বড় মান থেকে ইনসার্ট শুরু করুন:

mysql> INSERT INTO LargeAutoIncrement VALUES(9223372036854775805);
mysql> INSERT INTO LargeAutoIncrement VALUES();
mysql> INSERT INTO LargeAutoIncrement VALUES();

ফলাফল দেখুন:

mysql> SELECT * FROM LargeAutoIncrement;
+---------------------+
| Id                  |
+---------------------+
| 9223372036854775805 |
| 9223372036854775806 |
| 9223372036854775807 |
+---------------------+
3 rows in set (0.00 sec)

গুরুত্বপূর্ণ: ৯২২৩৩৭২০৩৬৮৫৪৭৭৫৮০৭ হলো SIGNED BIGINT-এর সর্বোচ্চ মান। এরপর আর ইনসার্ট করলে এরর দেবে (Duplicate entry বা Out of range)।

UNSIGNED BIGINT ব্যবহার করলে আরও বড়

CREATE TABLE LargeAutoIncrementUnsigned (
    Id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY
);

তবে এতে কিছু ক্লায়েন্ট লাইব্রেরি সমস্যা করতে পারে (জাভা Long সাইনড)।

প্র্যাকটিক্যাল টিপস

  • INT UNSIGNED: ৪.২ বিলিয়ন (৪,২৯,৪৯,৬৭,২৯৫) - অধিকাংশ অ্যাপের জন্য যথেষ্ট
  • BIGINT: ৯ কвин্টিলিয়ন - খুব বড় স্কেলের জন্য
  • UUID: ১২৮-বিট - ডিসট্রিবিউটেড সিস্টেমের জন্য
  1. MySQL-এ SUBSTRING_INDEX() দিয়ে কমা-সেপারেটেড সংখ্যার সেটের প্রথম সংখ্যা দিয়ে ORDER BY করা

  2. MySQL-এ ZEROFILL এবং কাস্টম AUTO_INCREMENT সেট করা

  3. MySQL-এ একক কোয়ারিতে সব কলামের জন্য এলিয়াস (Alias) সেট করা

  4. MySQL-এ ইনিশিয়াল ভ্যালু ও অটো-ইনক্রিমেন্ট সেট করা