mohsenshahbazi
سه شنبه 19 فروردین 1393, 13:47 عصر
سلام !
سناریو اینه که ما دنبال بهترین روش که شامل سرعت پاسخگویی سریعتر و کمترین استفاده از منابع میشه میگردیم که بشه باهاش داخل یک جدول بررسی کرد که آیا سطر خاصی وجود داره یا خیر .
مثلا آیا سطری وجود داره که مقدار فیلد mark اون برابر با یک عبارت md5 باشه یا نه .
در حال حاضر 2 روش هست که یکیش با select و num_rows هست که مصرف و درگیری منابع زیادی داره / یکی select و fetch_array هست
4 روش هم به این صورت هست که اولی : select count(id) بزنیم به جدول با شرط / دوم اینه که select count(*) بزنیم به جدول / سوم این که select varname IF EXIST بزنیم به جدول / چهارم هم IF NOT EXIST بزنیم به جدول /
حالا طبق تجارب شما کدوم یک از این کوئری ها کمترین مصرف منابع و درگیری رو داره / این بهینه بودن با چه engine 'ی به دست میاد ؟ / innodb یا myisam ؟ چون ممکنه در هر 3-4 ثانیه بین 800 تا 1 میلیون رکورد جستجو بشن و بشه بررسی کرد که آیا چنین سطری وجود داره یا نه .
ترجیحا اگر کوئری سازگار با BLOB/TEXT باشه هم بهتره ( مثلا index های unique با blob/text نمیشه استفاده کرد )
سناریو اینه که ما دنبال بهترین روش که شامل سرعت پاسخگویی سریعتر و کمترین استفاده از منابع میشه میگردیم که بشه باهاش داخل یک جدول بررسی کرد که آیا سطر خاصی وجود داره یا خیر .
مثلا آیا سطری وجود داره که مقدار فیلد mark اون برابر با یک عبارت md5 باشه یا نه .
در حال حاضر 2 روش هست که یکیش با select و num_rows هست که مصرف و درگیری منابع زیادی داره / یکی select و fetch_array هست
4 روش هم به این صورت هست که اولی : select count(id) بزنیم به جدول با شرط / دوم اینه که select count(*) بزنیم به جدول / سوم این که select varname IF EXIST بزنیم به جدول / چهارم هم IF NOT EXIST بزنیم به جدول /
حالا طبق تجارب شما کدوم یک از این کوئری ها کمترین مصرف منابع و درگیری رو داره / این بهینه بودن با چه engine 'ی به دست میاد ؟ / innodb یا myisam ؟ چون ممکنه در هر 3-4 ثانیه بین 800 تا 1 میلیون رکورد جستجو بشن و بشه بررسی کرد که آیا چنین سطری وجود داره یا نه .
ترجیحا اگر کوئری سازگار با BLOB/TEXT باشه هم بهتره ( مثلا index های unique با blob/text نمیشه استفاده کرد )