• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
جلوگیری از ثبت داده های تکراری
#1
سلام

من یه جدول دارم که نمیخوام رکوردهای تکراری داخلش ثبت بشه .
دو راه حل برای این کار به ذهنم رسید:
1- گرفتن تعداد رکوردها و اگر هیچ رکوردی وجود نداشت اینزرت میکنیم
2- استفاده از ایندکس unique روی یکی از ستون ها.

فرض میکنیم جدول حاوی هزاران بلکه میلیون رکورد است.
روش اول که به درد نمیخوره چون اون ستونی که میخواهیم ببینیم تکراریه یا نه ایندکس نیست و در ضمن چک کردن یک شرط بین اون همه رکورد هم، سرعت رو کاملا پایین می آورد.

در روش دوم، آیا سرعت فراخوانی با آن حجم فرضی داده پایین نمی آید؟

آیا راه حل بهتری هم هست؟ Wink
  پاسخ
تشکر شده توسط :
#2
نوع فیلدتون رو باید مشخص کنین چیه و اینکه حاوی چه مقداری میخواین باشهBlush
بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
  پاسخ
تشکر شده توسط : Maysam.m
#3
بهر حال راه بهتری نیست، در ضمن وقتی رو میلیون برید بهر حال با کندی سرعت روبرو میشید و باید از الان اگه آینده رکوردهاتون رو اینطوری پیش بینی میکنید، فکر سیستم طراحی قوی باشید و از Innodb استفاده کنید
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط : Maysam.m webnevesht javafa
#4
(۱۳۹۱ آبان ۰۲, ۱۱:۰۰ ب.ظ)webnevesht نوشته: نوع فیلدتون رو باید مشخص کنین چیه و اینکه حاوی چه مقداری میخواین باشهBlush
VARCHAR(255)
مقدارش حاوی رشته های فارسی و انگلیسی است.


(۱۳۹۱ آبان ۰۲, ۱۱:۵۳ ب.ظ)hamid_80386 نوشته: بهر حال راه بهتری نیست، در ضمن وقتی رو میلیون برید بهر حال با کندی سرعت روبرو میشید و باید از الان اگه آینده رکوردهاتون رو اینطوری پیش بینی میکنید، فکر سیستم طراحی قوی باشید و از Innodb استفاده کنید
برای این از Innodb استفاده نمیکنم که MyISAM باید راحت تر باشه کارکردن باهاش و قابلیت Full-text index داره .
به نظر شما ایا قابلیت ایندکس معمولی در ستون با مشخصات بالا بهتر از ایندکس فول تکست جوابگو نیست؟
  پاسخ
تشکر شده توسط :
#5
همین unique index کفایت میکنه
اگه جداول درست طراحی شده باشن افت چندانی نداره.
  پاسخ
تشکر شده توسط : masoud1990 Maysam.m


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان