PDA

View Full Version : پیدا کردن محصول با استفاده از عنوان محصول



i-php-i
دوشنبه 08 اردیبهشت 1393, 01:43 صبح
معمولا برای راحتی کار برای پیدا کردن سطر مربوطه از کلید اولیه استفاده می شه، کلید primary خودش ایندکس گزاری می شه سرعت سایت کاهش پیدا نمی کنه

اما میخوام بجای کلید اولیه از عنوان محصول استفاده کنم، با توجه به اینکه ممکنه تعداد محصولات زیاد بشه چیکار باید بکنم که هنگام جستجوی محصولات سرعت سایت پایین نیاد؟

masiha68
دوشنبه 08 اردیبهشت 1393, 08:22 صبح
سرعت سایت با این کار پایین نمیاد ... بهتره از لیمت واسه سلکتت استفاده کنی مثلا فقط 10 تا رو برگردون و اینجوری سرعت کم نمیشه

i-php-i
دوشنبه 08 اردیبهشت 1393, 13:57 عصر
سرعت سایت با این کار پایین نمیاد ... بهتره از لیمت واسه سلکتت استفاده کنی مثلا فقط 10 تا رو برگردون و اینجوری سرعت کم نمیشه
یعنی اگر 100،000 رکورد داشته باشیم و بجای کلید اولیه از عنوان محصول برای پیدا کردن رکورد مربوطه توی جدول استفاده کنیم مشکلی پیش نمی یاد؟!

masiha68
دوشنبه 08 اردیبهشت 1393, 14:10 عصر
بستگی به قدرت سرورتون داره و سلکتی که می زنین ... سرعت پایین میاد ولی نه خیلی زیاد ...

masiha68
دوشنبه 08 اردیبهشت 1393, 14:15 عصر
select * from table where name=$value ;
select title from table where name=$value order by id desc limit 10
شما این دوتا سلکت رو در نظر بگیرین ... توی اولی نام هرچی باش میره و پیداش می کنه مثلا اگه 1000 تا کوئری با مقدار مورد نظر داشته باشین همشون رو برمی گردونه و توی حافظه ی ذخیره می کنه
ولی توی دومی فقط 10 تا رو بر می گردونه ...یعنی حتی اگه 1000 تا هم باشه فقط ده تا رو توی حافظه نگه میداره و بعد اینکه اون ده تا رو پیدا کرد دیگه نمیره واسه اون 990 تای دیگه بگرده
پس همه چی بستگی به نوع سلکت شما داره

Unique
دوشنبه 08 اردیبهشت 1393, 14:39 عصر
من فکر کنم اصلا بحثشون paging نیست ! میخوان برای locate کردن سطر توی query بجای ردیف جدول از اسم محصول استفاده کنند.

از نظر علمی این کار درست نیست ! قطعا استفاده از عدد برای locate کردن و فیلد primary بودن و index کردن اون فیلد و بررسی یکتا بودنش بسیار بسیار سریعتر از یک رشته varchar و حتی char با طول ثابت هستش !

علت این کار چیه ؟ مشکل چیه که چنین کاری بکنید ؟

i-php-i
دوشنبه 08 اردیبهشت 1393, 14:56 عصر
ولی توی دومی فقط 10 تا رو بر می گردونه ...یعنی حتی اگه 1000 تا هم باشه فقط ده تا رو توی حافظه نگه میداره و بعد اینکه اون ده تا رو پیدا کرد دیگه نمیره واسه اون 990 تای دیگه بگرده

صحبت من اینبود که الان VB برای پیدا کردن این تاپیک آی دی 450095 رو در نظر می گیره، حالا اگر بخوایم از عنوان تاپیک "پیدا کردن محصول با استفاده از عنوان محصول" بجای آی دی استفاده کنیم چه نوع ایندکس گزاری باید انجام بدیم و کلا چیکار کنیم که سرعت سایت پایین نیاد.

i-php-i
دوشنبه 08 اردیبهشت 1393, 15:07 عصر
از نظر علمی این کار درست نیست ! قطعا استفاده از عدد برای locate کردن و فیلد primary بودن و index کردن اون فیلد و بررسی یکتا بودنش بسیار بسیار سریعتر از یک رشته varchar و حتی char با طول ثابت هستش !

علت این کار چیه ؟ مشکل چیه که چنین کاری بکنید ؟
خودم هم با این روض مخالفم ولی صاحب وب سایت می گه لینکها حتما باید به همین شکل که می گم باشن

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

استفاده از ایندکس full text مشکل رو کاملا برطرف می کنه؟

Unique
دوشنبه 08 اردیبهشت 1393, 18:04 عصر
دوست عزیز ، حالا میشه پاسخ داد به شما. مشتری میگه میخواد توی url صفحه عنوان هم باشه.
شما باید از همون شماره رکورد برای query استفاده کنین اما باید از htaccess. و تکنیک url rewriting استفاده کنین. در موردش توی همین انجمن جستجو کنین و کلی تاپیک پرسش و آموزش پیدا میکنید.. همین VB را اگه نگاه کنین اینطوری نوشته توی url:


450095-پیدا-کردن-محصول-با-استفاده-از-عنوان-محصول

اما با url rrwriting و استفاده از RegExp میاد و 450095 که شماره تاپیک هست را جدا میکنه و جستجو را بر اساس اون انجام میده.
پس دیگه نیاز به پاسخ به پرسش شما نیست و باید برین در مورد url rewriting تحقیق کنید.

موفق و پیروز باشین

i-php-i
سه شنبه 09 اردیبهشت 1393, 11:05 صبح
اما با url rrwriting و استفاده از RegExp میاد و 450095 که شماره تاپیک هست را جدا میکنه و جستجو را بر اساس اون انجام میده.
پس دیگه نیاز به پاسخ به پرسش شما نیست و باید برین در مورد url rewriting تحقیق کنید.

موفق و پیروز باشین
نه اصلا نباید آی دی محصول توی لینک باشه

لینکها باید شبیه به این لینک باشن:

barnamenevis.org/showthread.php?پیدا-کردن-محصول-با-استفاده-از-عنوان-محصول

Unique
چهارشنبه 10 اردیبهشت 1393, 00:58 صبح
به کل استفاده از این روش اشتباهه ،‌ضرری که شخص از performance پایین میکنه خیلی زیاده و ارزش نداره.
خیلی وقت ها باید وقت گذاشت و با مشتری حرف زد و قانعش کرد. احتمالا ایشون همین لینک ها را جایی دیده اما حواسش نبوده در واقع id هم داره ! حالا شما id را بگذار توی url و طرف را بپیچون. اینطوری :


barnamenevis.org/showthread.php/405894/پیدا-کردن-محصول-با-استفاده-از-عنوان-محصول

استفاده از varchar و full-text و این حرفا کار اشتباهیه. شما برو با مشتری صحبت کن و از همین روشی که من گفتم استفاده کن. و یادمون باشه همیشه حق با مشتری نیست.

i-php-i
چهارشنبه 10 اردیبهشت 1393, 18:25 عصر
استفاده از varchar و full-text و این حرفا کار اشتباهیه. شما برو با مشتری صحبت کن و از همین روشی که من گفتم استفاده کن. و یادمون باشه همیشه حق با مشتری نیست.
بعضی از وب سایتها از این روش استفاده می کنن

بغیر از این موضوع موقع ایجاد قابلیت جستجو توی وب سایت اگر از full-text استفاده نکنیم چطور می شه جلوی کاهش سرعت سایت رو گرفت؟

کلا استفاده از full-text چه قواعدی داره؟

Unique
پنج شنبه 11 اردیبهشت 1393, 00:47 صبح
بعضی از وب سایتها از این روش استفاده می کنن
من که کوچکترین منطقی توش نمیبینم و کلا از نظر بنده رد شده هستش !


کلا استفاده از full-text چه قواعدی داره؟
full-text search اصلا استفاده های دیگه داره و برای جستجو توی داده های text و mediumtext و ... استفاده کرده ام ازش. در مورد موضوعی که شما صحبت میکنید اصلا نه کارایی خاصی داره و نه جایی براش هست. بهتره تجدید نظر کنید.

i-php-i
پنج شنبه 11 اردیبهشت 1393, 01:12 صبح
بالاخره می شه برای قسمت جستجوی سایت از full-text استفاده کرد یا نمی شه؟ البته منظورم قسمت جستجوی پیشرفته سایت هست که باید بین محصولات، مقالات و... جستجو کنه. در این حالت چطور می شه سرعت جستجو رو بالا برد؟

afee1990
پنج شنبه 11 اردیبهشت 1393, 10:04 صبح
عنوان محصولات رو از نوع varchar و unique معرفی کن یا اینکه یه فیلد دیگه به اسم slug درست کن از نوع varchar و unique که عنوان متن مثل «عنوان محصول آزمایشی» به «عنوان-محصول-آزمایشی» تبدیل بشه و توی اون فیلد ذخیره کن و بعدش به راحتی اونو تو لینکهات چاپ کن. و به راحتی توش جستجو انجام بده. تفاوت کارایی و سرعت هم در داده‌های خیلی زیاد محسوسه وگرنه کندی مشاهده نمی‌کنی

بعد اینکه Full-text index فقط برای داده‌هایی با نوع text استفاد میشه و فقط هم در موتور MyIsam کارایی داره و برای innodb هم باید mysql 5.6 به بالا داشته باشین