مقایسه دو فیلد با COLLATION های مختلف
سلام
collation دیتابیس من Arabic_CI_AS است. من یک لینک دارم به یک دیتابیس دیگر با SQL_Latin1_General_CP1_CI_AS .
جدول دیتابیس دوم مربوط به یک نرم افزار اسپانیایی گران قیمت است و ما اجازه دستکاری در آن را نداریم!
من برای جستجو از این کوئری استفاده می کنم:
SELECT TOP(200) T1.[Id],T1.[Name],T2.CustomerName,[UserId],FORMAT([OrderTime],'yyyy/MM/dd-HH:mm','fa') [OrderTime]
,FORMAT(LastDate,'yyyy/MM/dd-HH:mm','fa') LastDate,PriceListNo
FROM tblProjects T1
INNER JOIN tblCustomers T2 ON T1.CustomerId=T2.id
LEFT JOIN vwLantekLast T3 ON T1.Name=T3.JobRef COLLATE SQL_Latin1_General_CP1_CI_AS
قبل از اینکه بخواهم داده ای از جدول vwLantekLast (در واقع ویو است) به این کوئری جوین کنم با سرعت بسیار خوبی اجرا میشد. vwLantekLast هم به تنهایی با سرعت بسیار بالایی باز میشود. اما چون فیلدهای مورد نیاز در جوین از یک collation نیستند این 200 ردیف را در 6 ثانیه برمیگرداند!! که خیلی کند است!
نوع هر دو فیلد هم varchar است و محتوی آن انگلیسی است. مثلا JOB000123
راه بهتری سراغ دارید؟
نقل قول: مقایسه دو فیلد با COLLATION های مختلف
سلام.
یک ایندکسد ویو روی تیبلی که کولیشنش فرق داره بسازید و فیلد مورد نظر رو با کولیشن مورد نظر در ویو اد کنید.
این ویو رو جوین کنید.
نقل قول: مقایسه دو فیلد با COLLATION های مختلف
متاسفانه امکان هر گونه ویرایش روی دیتابیس دوم را ندارم!
نقل قول: مقایسه دو فیلد با COLLATION های مختلف
سلام و روز خوش
من برای آگاهی خودم میپرسم:
1- آیا مشخص کردن collation در join واقعا لازمه؟
یعنی اگر نیاریم خطا میده یا نتایج اشتباه برمیگردونه؟
2- نمیشه اون view رو بصورت temptable در دیتابیس خودتون بیارین و با اون join کنین؟
3- نمیشه فقط collation فیلد name از tblProjects رو به SQL_Latin1_General_CP1_CI_AS تغییر بدین؟