PDA

View Full Version : سوال: چرا اطلاعات فارسی دیرتر از اطلاعات انگلیسی در دستورات mysql اجرا می شوند؟



asonline
شنبه 04 مرداد 1393, 11:07 صبح
ما از یک select برای دریافت اطلاعاتی از دیتابیس mysql استفاده میکنیم به شکل زیر:


$query = "select * from table1 where text = '$text'";
mysql_query($query);

ولی وقتی متغیر $text یک مقدار فارسی گرفته باشد زمان بیشتری نسبت به زمانی که یک مقدار انگلیسی گرفته باشد صرف می شود تا اطلاعات مورد نظر از دیتابیس استخراج شوند
می خواستم بدانم مشکل از کجاست؟

eshpilen
شنبه 04 مرداد 1393, 11:29 صبح
خب اگر اختلافش زیاد و مشکل ساز نباشه که عجیب نیست و نیازی به کار خاصی هم نیست!
بهرحال زبانهایی مثل فارسی هر کاراکترشون در انکدینگ utf8 از بیش از یک بایت تشکیل شده، پس حجمشون بیشتره. این میتونه یک علت باشه. اما علتهای متعدد دیگری هم میشه برای کندی تصور کرد. بطور کلی چون زبان انگلیسی و کاراکترهای تک بایتی استاندارد و پایه بوده و معمولا بهش اولویت داده میشه، پس امکان اینکه در نهایت برنامه ها با زبان انگلیسی بهتر کار کنن بیشتره و طبیعی است.
مثلا فرض کنید از اول که MySQL رو طراحی کردن شاید فقط زبان انگلیسی رو ساپورت میکرده یا حداقل اینکه زبان انگلیسی رو بصورت درونی و پایه و بهینه تری ساپورت میکرده و زبانهای دیگر منجمله یونیکد و کاراکترهای چندبایتی رو ممکنه بعدا توسط بنوعی Patch کردن کدها و الگوریتم اصلی، بهش اضافه کردن. همین الان هم مثلا PHP خودش یه مثال از چنین مواردی هست که بصورت درونی یونیکد رو ساپورت نمیکرده تا نسخه های اخیر (فکر کنم قرار بود در نسخهء 6 بهش اضافه بشه).
همچنین شاید خیلی از تست ها و بهینه سازی های سرعت و اینها هم با زبان انگلیسی انجام میشن یا حداقل با زبان انگلیسی کار بیشتری روشون میشه و اولویت بالاتری داده میشه.
درکل اگر این اختلاف سرعت زیاد نیست و مشکل عملی در کارایی برنامه ایجاد نمیکنه، طبیعی بوده و شما هم نیازی نیست نگرانش باشید و بهش گیر بدید. اختلاف پرفورمنس در خیلی موارد ممکنه به علتهای بیشماری وجود داشته باشه. اینا درحد طبیعی و نوسانات همیشگی هست که بسته به شرایط و دیتای برنامه است و الگوریتم های بیشماری که استفاده شده.
بهرحال بیشترین اطلاعات و تجربه و کار و الگوریتم های آماده در مواردی مثل بهینه سازی، در زبان انگلیسی وجود داره تا زبانهای دیگر! این کاملا طبیعیه. مثلا شاید یه الگوریتم هایی که با یونیکد کار میکنن، با زبان انگلیسی بهینه تر باشن، چون طبیعتا اطلاعات و برنامه نویسان و اولویت بیشتری در این زمینه وجود داشته.

mtnam1372
شنبه 04 مرداد 1393, 14:44 عصر
جواب utf8 است