شرح صفوف ومحتوى الفقرة
تمنع قيود عدم التكرار UNIQUE على مستوى قاعدة البيانات تسجيل بريد إلكتروني أو رمز منتج مكرر حتى مع الطلبات المتزامنة، بينما تسرّع الفهارس INDEX استعلامات البحث.
- الاكتفاء بفحص عدم التكرار في كود PHP فقط عرضة لتعارض الطلبات المتزامنة؛ لذا يجب فرض قيد
UNIQUEداخل تصميم الجدول نفسه. - أضف فهارس (Indexes) على الأعمدة التي تُستخدم بكثرة في شروط
WHEREأوJOINأوORDER BY. - اختر أطوالاً مناسبة لأعمدة النصوص المفهرسة (مثل
VARCHAR(190)للبريد الإلكتروني) للحفاظ على خفة الفهرس في الذاكرة.
يفرض عمود email عدم التكرار مباشرة عبر محرك قاعدة البيانات، ويفهرس idx_users_role عمود الصلاحية لتسريع التصفية.
PHP
<?php
$pdo = new PDO('sqlite::memory:');
$pdo->exec('CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
email VARCHAR(190) NOT NULL UNIQUE,
role VARCHAR(30) NOT NULL DEFAULT "member"
)');
$pdo->exec('CREATE INDEX idx_users_role ON users (role)');
echo "Users table + UNIQUE email + role INDEX ready\n";