نمایش نتایج 1 تا 5 از 5

نام تاپیک: انتخاب بین افزونگی داده و Join

  1. #1

    انتخاب بین افزونگی داده و Join

    سلام به همه.
    دو جدول زیر را در نظر بگیرید :
    CREATE TABLE  `tm`.`archive` (
    `serial` char(14) collate utf8_persian_ci NOT NULL,
    `archive_number` tinyint(3) unsigned NOT NULL,
    `date_f` char(10) collate utf8_persian_ci default NULL,
    `date_p` char(10) collate utf8_persian_ci NOT NULL,
    `date_s` char(10) collate utf8_persian_ci default NULL,
    `state` tinyint(3) unsigned NOT NULL,
    `s_id` int(10) unsigned default NULL,
    `i_id` int(10) unsigned default NULL,
    PRIMARY KEY (`serial`),
    KEY `FK_archive_1` (`s_id`),
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci;

    و
    CREATE TABLE  `tm`.`arctoarc` (
    `serial` char(14) COLLATE utf8_persian_ci NOT NULL,
    `arc_no1` tinyint(3) unsigned NOT NULL,
    `date1` char(10) COLLATE utf8_persian_ci NOT NULL,
    `arc_no2` tinyint(3) unsigned NOT NULL,
    `date2` char(10) COLLATE utf8_persian_ci NOT NULL,
    `arc_no3` tinyint(3) unsigned NOT NULL,
    `date3` char(10) COLLATE utf8_persian_ci NOT NULL,
    PRIMARY KEY (`serial`),
    CONSTRAINT `FK_arcTOarc_1` FOREIGN KEY (`serial`) REFERENCES `archive` (`serial`) ON DELETE NO ACTION ON UPDATE NO ACTION
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci;

    همونطور که می بینید این دو جدول از طریق فیلد سریال با هم یه ارتباط یک به یک (یا صفر) دارند. برای اکثر سریال ها، سطر های جدول دوم null هستند و شاید 5 درصد سریال ها در این جدول دوم سطر خواهند داشت. جدول اول ما در نهایت 1 میلیون رکورد خواهد داشت و همونطور که گفتم 5 درصد این رکوردها در جدول دوم نماینده دارند. سوال اینجاست که از اونجایی که روی این دو جدول پرس و جو زیاد انجام میشه و پرس و جو هم همگی باید روی Join این دو جدول انجام بشه، با توجه به حجم 1 میلیونی داده، بهتر نیست که دو جدول رو یکی کنم و این حجم داده null رو قبول کنم اما پرس و جو ها رو بدون الحاق انجام بدم؟

    سپاس.

  2. #2

    نقل قول: انتخاب بین افزونگی داده و Join

    ببخشید که من این تاپیک رو به این صورت در معرض دید قرار می دم اما جواب سوال برام بسیار مهمه.

  3. #3

    نقل قول: انتخاب بین افزونگی داده و Join

    خواهش می کنم بعد از 1 ماه یه جوانمردی این سوال پیش پا افتاده ما رو جواب بده.

  4. #4

  5. #5

    نقل قول: انتخاب بین افزونگی داده و Join

    سلام دوست عزیزم،
    بستگی به بانک اطلاعاتی شما داره. مثلا در SQL Server 2008 فیلدی که ممکنه Null زیاد داشته باشه میتونین با خاصیت Sparse تعریف کنید که برای Null هیچ فضایی اشغال نمیکنه. در کل این تفکیک صرفا به خاطر داشتن Null مزیت مهمی نیست، من ترجیح میدم Null داشته باشم. چون به قول فرنگی ها:
    Disk Space is Cheap, Join is expensive

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •