1- جدول اطلاعات عکس Image_Info
Number bigint و imagename nvarchar
2-جدول اطلاعات تگ های هر عکس img_tag
imageid bigint و tagid bigint
برای جستجو در عکسهای با یک تگ :
SELECT dbo.Image_Info.Number, dbo.img_tag.tagid
FROM dbo.Image_Info INNER JOIN
dbo.img_tag ON dbo.Image_Info.Number = dbo.img_tag.imageid
WHERE (dbo.img_tag.tagid = 110)
برای جستجو در عکسهای با دو تگ :
SELECT dbo.Image_Info.Number, dbo.img_tag.tagid
FROM dbo.Image_Info INNER JOIN
dbo.img_tag ON dbo.Image_Info.Number = dbo.img_tag.imageid
WHERE (dbo.img_tag.tagid = 110) AND (dbo.Image_Info.Number IN
(SELECT Image_Info_1.Number
FROM dbo.img_tag AS img_tag_1 INNER JOIN
dbo.Image_Info AS Image_Info_1 ON img_tag_1.imageid = Image_Info_1.Number
WHERE (img_tag_1.tagid = 660)))
برای جستجو در عکسهای با سه تگ :
SELECT dbo.Image_Info.Number, dbo.img_tag.tagid
FROM dbo.Image_Info INNER JOIN
dbo.img_tag ON dbo.Image_Info.Number = dbo.img_tag.imageid
WHERE (dbo.img_tag.tagid = 110) AND (dbo.Image_Info.Number IN
(SELECT Image_Info_1.Number
FROM dbo.img_tag AS img_tag_1 INNER JOIN
dbo.Image_Info AS Image_Info_1 ON img_tag_1.imageid = Image_Info_1.Number
WHERE (img_tag_1.tagid = 660) AND (dbo.Image_Info.Number IN
(SELECT Image_Info_1.Number
FROM dbo.img_tag AS img_tag_1 INNER JOIN
dbo.Image_Info AS Image_Info_1 ON img_tag_1.imageid = Image_Info_1.Number
WHERE (img_tag_1.tagid = 670)))))
که باselect های تو در تو پیاده سازی میکنم
آیا از این روش بهینه تری هم وجود داره؟
برای پیدا کردن عکسی با 5 تگ 6 ثانیه زمان صرف میشه
آیا میشه روی فیلد img_tag ایندکس تعریف کنم
آیا تاثیری تو سرعت داره؟
اگه ایندکس تعریف کنم آیا تغییری تو نحوه دستوراتم باید بدم؟
ممنون از توجه و راهنماییتون