ورود

View Full Version : تابع checksum با newid



irpersian20
پنج شنبه 29 فروردین 1392, 23:22 عصر
سلام

مگر این طور نیست که newid یک عدد منحصر به فرد تولید میکنه؟
مثلا میتوینم با دستور زیر عدد تصادفی درست کنیم.
یعنی یک عدد منحصر به فرد تولید میشه بعد توسط اون جدول مرتب میشه و اولین رکورد به ما داده میشه درسته؟

SELECT TOP(1) TEST_ID FROM TEST order by newid()),


خوب اگر checksum هم بیاریم باهاش جه فرق داره؟
کلا checksum چی کار میکنه؟
مثلا

SELECT TOP(1) TEST_id FROM TEST order by checksum(newid())),

ali ghaemi
جمعه 30 فروردین 1392, 00:36 صبح
تابع newid ، یک رشته 16 بایتی برای شما تولید می کنه که در هیچ کامپیوتر دیگری احتمال تولید آن وجود ندارد .
تابع CheckSum ، با توجه به پارامتر داخلی خودش یک ارزش هش شده رو تولید می کنه که از اون برای ساخت ایندکس های هش شده استفاده می شه که باعث افزایش سرعت می شه بخصوص وقتی پارامتر مورد نظر یک توالی از کاراکترهای طولانی باشه .


-- Create a checksum index.
SET ARITHABORT ON;
USE AdventureWorks2012;
GO
ALTER TABLE Production.Product
ADD cs_Pname AS CHECKSUM(Name);
GO
CREATE INDEX Pname_index ON Production.Product (cs_Pname);
GO


اینجا (http://msdn.microsoft.com/en-us/library/ms189788.aspx)رو ببینید

یوسف زالی
جمعه 30 فروردین 1392, 12:35 عصر
در هیچ کامپیوتر دیگری احتمال تولید آن وجود ندارد

این احتمال صفر نیست.

irpersian20
دوشنبه 02 اردیبهشت 1392, 20:19 عصر
سلام
این عدد 16 بیتی که تولید میشه جریان چیه؟
بر چه مبان Sort میده جدول رو؟ میشه مثالی بزنید؟ این عدد با چی مقایسه میشه؟

یوسف زالی
دوشنبه 02 اردیبهشت 1392, 20:43 عصر
newid سورت رندوم می ده

irpersian20
دوشنبه 02 اردیبهشت 1392, 20:47 عصر
newid سورت رندوم می ده
امکان داره لطف کنید و مثالی بزنید?

یوسف زالی
سه شنبه 03 اردیبهشت 1392, 13:16 عصر
select * from YouTable order by newid()

irpersian20
سه شنبه 03 اردیبهشت 1392, 14:53 عصر
select * from YouTable order by newid()

سلام
اون که بله درسته.
منظورم این عدد 16 بیتی هست که تولید میشه و بر اساس اون جدول رو مرتب میکنه
چشت پرده میخا ببینم واقعا چطوره

یوسف زالی
سه شنبه 03 اردیبهشت 1392, 16:08 عصر
برای هر ردیف در هنگام سورت عددی تولید می شه که با عدد قبلی در ردیف قبلی متفاوته.
بنابر همین سورت رندوم می شه.

mohsen.net
چهارشنبه 04 اردیبهشت 1392, 09:25 صبح
یک کاربرد دیگه checksum (و تفاوت با NewID) این هست که ازش برای ردیابی تغییرات یک رکورد استفاده می شود