ورود

View Full Version : ntext یا char یا ساختار فعلی



hercool
چهارشنبه 16 مهر 1393, 18:11 عصر
سلام دوستان من یک جدول دارم که به خاطر حجم بالا 17 گیگ و 189 میلیون رکورد می خوام بهینه ترش کنم چون در مراحل ابتدایی اشتباهات فاحشی کردم که الان گریبان گیرم شده و برای گذاشتن ایندکس باید از جدول رونویسی کنم و این باعث میشه حجم دیتابیس خیلی بالا بشه
جدول مورد بحث:
USE [Company]
GO

/****** Object: Table [dbo].[best] Script Date: 08/10/2014 06:31:00 ب.ظ ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[best](
[id] [bigint] IDENTITY(1,1) NOT NULL,
[codeday] [nvarchar](14) NULL,
[timee] [time](0) NULL,
[Traderow] [tinyint] NULL,
[nobuy] [bigint] NULL,
[volumebuy] [bigint] NULL,
[buyprice] [smallmoney] NULL,
[sellprice] [smallmoney] NULL,
[volumesell] [bigint] NULL,
[nosell] [bigint] NULL
) ON [PRIMARY]

GO
حالا می خوام بجز فیلد ای دی و کد روز بقیه فیلد ها رو به یک فیلد تبدیل کنم و پس از واکشی (در نرم افزاری که دارم می نویسم)روشون پردازش انجام بدم تا اینجوری حجم دیتابیس رو بیارم پایین تر جاش یکم حجم محاسبات رو بیشتر کنم
اولین نوع انتخابیم nchar بود که برای رقم پایین حجم بالایی رو می گرفت

08:02:10,2147483647,2147483647,255,922337203685477 5807,9223372036854775807,9223372036854775807,92233 72036854775807
ولی با استفاده از ntext میانگین و مکسیمم و مینیمم اندازه هر رکورد نزدیک 45 بایت هست در صورتی که در ساختار فعلی 83 و در حالتی که از nchar استفاده کنم چیزی بیشتر از 200 میشه
اما مشکل اینه که ntext به گفته ماکروسافت بزودی حذف میشه و در حال حاضر برای رکورد ها خیلی بزرگ استفاده میشه
و دومین مشکل هم اینه که:
من وقتی تعداد رکورد را در میزان حجم هر رکود ضرب می کنم اندازش خیلی کمتر از اندازه ای میشه که در مشخصات جدول بخش storge نوشته هست (یعنی فضای بیشتری میگیره )
البته تمام این اطلاعات بر اساس کوئری زیر هست
dbcc showcontig ('best') with tableresults
ممنون میشم در این زمینه راهنماییم کنید که چه نوعی را انتخاب کنم