ورود

View Full Version : ایندکس روی جدول temp



neda azadi
دوشنبه 28 اسفند 1385, 21:14 عصر
سلام دوستان. یواش یواش باید گفت سال نو مبارک

این query که در زیر مشاهده می کنید امکان ایجاد یک جدول کمکی در حین اجرای برنامه از روی یک جدول اصلی را فراهم می کنه . مشکل من اینه که از این جداول کمکی در گزارش گیری استفاده می شود و می خوام که حتما این جدول ایندکس داشته باشه . روی جدول اصلی هم ایندکس گذاشتم ولی تاثیری توی جدول کمکی نداره . می خولستم بدونم کسی از دوستان عزیز نمی دونه که چطور می شه با یک query دیگه ایندکس روی جدول کمکی گذاشت .
اسم جدول کمکی از اسم جدول اصلی و ساعت لحظه ساخت جدول تشکیل شده فرض کنید در متغیری به نام tname قرار دارد
select * into ## '+ tname+' from factprn
factprn اسم جدول اصلی است

iman_22a
سه شنبه 29 اسفند 1385, 00:55 صبح
سلام دوست عزیز ، توجه شما رو به مثالی از MSDN جلب می کنم ، احتمالا می تونید ازش ایده بگیرید :



Dim table As DataTable = new DataTable()
Dim keys(2) As DataColumn
Dim column As DataColumn

' Create column 1.
column = New DataColumn()
column.DataType = System.Type.GetType("System.String")
column.ColumnName= "FirstName"

' Add the column to the DataTable.Columns collection.
table.Columns.Add(column)
' Add the column to the array.
keys(0) = column

' Create column 2 and add it to the array.
column = New DataColumn()
column.DataType = System.Type.GetType("System.String")
column.ColumnName = "LastName"
table.Columns.Add(column)

' Add the column to the array.
keys(1) = column

' Set the PrimaryKeys property to the array.
table.PrimaryKey = keys

iman_22a
سه شنبه 29 اسفند 1385, 01:03 صبح
البته از آنجاییکه ستون های شما قبلا تعریف شده اند و احتمالا ستون ایندکس شماهم تعریف شده است ، لازم نیست ستون جدید تعریف کنید


Dim column as system.data.datacolumn = tablename.tablecolumnبه جای


column = New DataColumn()

AminSobati
سه شنبه 29 اسفند 1385, 11:35 صبح
دستور SELECT INTO ایندکسها رو منتقل نمیکنه چرا که اصلا ممکنه شما نتیجه JOIN بین چند جدول رو بخواین در یک جدول جدید ذخیره کنین که مشخص کردن ایندکسها از روی جداول اصلی برای این جدول جدید بی معنیه. از طرفی شما که میدونین چه جدولی رو قصد دارین بسازید تا ازش گزارش تهیه کنین، چه اشکالی داره که بعدش روی اون CREATE INDEX هم اجرا کنین؟

neda azadi
جمعه 03 فروردین 1386, 13:22 عصر
دستور SELECT INTO ایندکسها رو منتقل نمیکنه چرا که اصلا ممکنه شما نتیجه JOIN بین چند جدول رو بخواین در یک جدول جدید ذخیره کنین که مشخص کردن ایندکسها از روی جداول اصلی برای این جدول جدید بی معنیه. از طرفی شما که میدونین چه جدولی رو قصد دارین بسازید تا ازش گزارش تهیه کنین، چه اشکالی داره که بعدش روی اون CREATE INDEX هم اجرا کنین؟


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

AminSobati
جمعه 03 فروردین 1386, 13:46 عصر
همون روالی که جدول رو میسازه همون باید ایندکس رو هم بوجود بیاره. نام جدول رو به هر شکلی که تولید میکنید، در یک متغیر ذخیره کنین و ازش استفاده کنین برای قید کردن در ایندکس. فکر میکنم Dynamic TSQL مشکل رو حل کنه

neda azadi
جمعه 03 فروردین 1386, 21:22 عصر
همون روالی که جدول رو میسازه همون باید ایندکس رو هم بوجود بیاره. نام جدول رو به هر شکلی که تولید میکنید، در یک متغیر ذخیره کنین و ازش استفاده کنین برای قید کردن در ایندکس. فکر میکنم Dynamic TSQL مشکل رو حل کنه


Dynamic TSQL چیه ؟
روالی جدول رو بوجود نمی یاره که همون query که گفتم این کار رو می کنه

AminSobati
شنبه 04 فروردین 1386, 00:19 صبح
پس واجب شد sp_executesql یا exec رو در Books Online ببینید!