أريد معرفة ال INDEX BY table المعرف فى الأوراكل
ما هو ال INDEX BY table
Index-organized tables are tables with data rows grouped
according to the primary key.
Index-organized tables provide fast key-based access to
table data for queries involving exact match and range
searches. Changes to the table data (such as adding new
rows, updating rows, or deleting rows) result only in
updating the index structure (because there is no separate
table storage area).
Index-organized tables are particularly useful when you are
using applications that must retrieve data based on a
primary key.
CREATE TABLE docindex( token char(20), doc_id NUMBER, token_frequency NUMBER, token_offsets VARCHAR2(512), CONSTRAINT pk_docindex PRIMARY KEY (token, doc_id)) ORGANIZATION INDEX TABLESPACE ind_tbs PCTTHRESHOLD 20 OVERFLOW TABLESPACE ovf_tbs;
فهل يكون لديها Strucure خاص إضافى للـ Primary Key لدى الجدول ، أرجو التوضيح أكثر
ماذا تقصد بـ " Strucure خاص إضافى للـ Primary Key " ؟؟ هل تقصد بنية التخزين الفيزيائي ؟
لا يلزم تعريف أي بنية بل يكفي أن تحدد المفتاح الأساسي فقط كما تعرفه في أي جدول ...
أقصد أنه يتم تكوين جدول مناظر للجدول الأساسى - يشبه ال Array .
هل انت تقصد أن هذه أمكانية أضافية مع ال Primary Key لتسريع عملية البحث ؟ ، بصراحة هذا الجزء موجود فى تعريف ال ROW و TABLE , INDEX BY tables ، فى دروس PL/SQL
اخي : المعروف أن سجلات الجداول خزن فيزيائياً داخل datablocks بشكل غير مرتب حسب المفتاح الرئيسي و هذا يؤدي إلى زيادة زمن البحث عن سجل معين داخل البلوك لأنه سوف يضطر إلى قراءة block header حتى يعلم السجلات المخزنة داخل هذا البلوك فإذا وجد السجل يقوم بقراءته و إلا فإنه يذهب إلى البلوك الآخر و هكذا ... أما بنية Index فهي أفضل من حيث سرعة البحث حسب btree أو bitmap ... لذلك طرحت أوراكل جداول منظمة مثل index من أجل تسريع عمليات البحث ( لن تحتاج إلى index في هذه الحالة ) و لكن عمليات الإضافة و التعديل بكميات كبيرة ستكون كارثة !!! ..
لا يوجد هنا جدول مناظر ( أي جدولين الأول طبيعي و الثاني index -orginzed ) هنا جدول واحد لا غير
شكرا أخى Informat
أهلاً
هذا الموضوع مغلق.