对不起,我的英语;在我们的SQL Server 2014项目中,我们有两个表在Web应用程序和Android设备之间同步(因此它们在所有移动设备上)。
在我们的数据库中,这两个表由类型为integer
的唯一标识符标识为主键,但是我们还希望有一个GUID
单列,以“跟随”其创建后的数据。 / p>
我们的表A具有以下列:
A_ID int
A_guid nvarchar (50)
和明细表:
detailA_ID int
detailA_guid nvarchar (50)
A_guid nvarchar (50) (on mobile only)
GUID列用于移动应用程序中,并且在SQL Server上同步时,“详细信息”数据将查找与“ A_guid”相对应的SQL Server ID:
select A_ID
from A
where A_guid = detailA.A_guid
我们所有的数据都已经通过SQL Server凭据链接在一起。当然,只要数据很少,一切都会起作用。 “ GUID”将很快花费一些时间。我们所有的GUID列都采用以下格式:
DEVICE_ID-YYYMMDD- [Function NEWID ()]
应用索引不是很有效。我考虑过更改格式以对应于:
DEVICE_ID-YYYMMDD_HIS
但是我不知道我们是否会提高速度。
答案 0 :(得分:0)
由于顾名思义,GUID(全局唯一标识符)是唯一的,因此您无需在guid列中包括display:none;
。如果需要该数据,请将其分别存储在其自己的列中。如注释中所述,这将允许您使用#header:hover {
opacity: 0;
z-index: -1;
}
数据类型,这将稍微提高性能。绝对,在guid列上建立索引,这比没有索引要快得多!
(我不确定DEVICE_ID
指的是什么,但是添加额外的字符不会使事情变快。)
答案 1 :(得分:0)
正如我的同伴所说,如果要使用GUID,请使用uniqueidentifier
,这是SQL Server中的已知数据类型。
如果GUID不足以满足您的要求,但是您需要包含更多信息。我建议创建一个非正式表,该表将使用相应的GUID将所有必需的信息保存在单独的列中。这比将GUID包含在其他值的字符串中更好。
因此,而不是:DEVICE_ID-YYYMMDD- [Function NEWID ()]
您最好这样做:INSERT INTO informationTable (DeviceId, CreatedDate, RecordGUID)