انتقل إلى محتوى الدرس

Virtual vs Stored Generated Columns الفرق بين VIRTUAL و STORED

تعلّم تصميم مخطط قاعدة بيانات علائقية متكامل والأعمدة المولدة في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
7 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

يوفر محرك MySQL 8 وضعين لتخزين الأعمدة المولدة يجب اختيار الأنسب منهما بعناية:

  • الوضع الافتراضي VIRTUAL: لا يستهلك أي مساحة تخزين داخل الصف على القرص، بل تُحسب قيمته لحظياً في الذاكرة عند تنفيذ SELECT. وتتميز أعمدة VIRTUAL بإضافتها الفورية ودعمها للفهارس الثانوية في InnoDB.
  • الوضع المخزن STORED: تُحسب قيمته عند تنفيذ INSERT أو UPDATE وتُكتب فعلياً على القرص؛ ويُستخدم عند الحاجة لتضمين العمود في مفتاح أساسي أو فهرس نص كامل.
SQL
CREATE TABLE customer_accounts (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  fname VARCHAR(50) NOT NULL,
  lname VARCHAR(50) NOT NULL,
  email VARCHAR(150) NOT NULL UNIQUE,
  full_name VARCHAR(101)
    GENERATED ALWAYS AS (CONCAT(fname, ' ', lname)) VIRTUAL,
  email_domain VARCHAR(100)
    GENERATED ALWAYS AS (SUBSTRING_INDEX(email, '@', -1)) STORED
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;