假设我在数据库集中有一个ID行(int)作为主键.如果我经常查询ID,我还需要索引吗?或者它是否是主键意味着它已被索引?
我问的原因是因为在MS SQL Server中我可以在这个ID上创建一个索引,正如我所说的那样是我的主键.
编辑:一个额外的问题 - 额外索引主键会不会有任何损害?
我有一个使用表单身份验证的asp.net网站.我在会话中保留了一些内容,如用户名,用户ID,电子邮件等.
我允许用户通过在身份验证cookie上设置较长的到期日期来保持登录网站.因此,当用户仍然进行身份验证时,会话过期是很常见的.
我遇到的问题是,有时用户的会话超时但他们仍然经过身份验证.因此,例如,我的一个用户页面(需要身份验证)会在其会话处于活动状态时说"欢迎Mike",但一旦过期,它将显示"Welcome [blank]",因为该信息不再在会话中,但他们仍然经过身份验证.
处理这个问题的最佳方法是什么?当信息不再存在时,我应该重新同步会话信息吗?或者我应该将用户信息(用户名,用户ID,电子邮件)移动到cookie中而不用担心会话超时?
我不想将会话长度设置为60分钟或更长时间.我想要的是我的用户能够登录一次而不用担心必须再次登录才能明确注销.
有没有办法使用LoadWith但指定返回的字段?
例如,如果我有两个表1)产品2)类别
并做一些类似的事情
DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Products>(d => d.Categories);
db.LoadOptions = dlo;
MyDataContext db = new MyDataContext();
var result = from d in db.Products
select d;
Run Code Online (Sandbox Code Playgroud)
当我在profiler中检查查询时,我看到正在返回Categories表中的所有行.我真正需要的只是"名称"字段.
我知道我可以使用连接重写查询,但我需要将结果集作为"Product"数据类型返回,这就是我使用LoadWith的原因.
asp.net ×1
c# ×1
cookies ×1
indexing ×1
linq ×1
primary-key ×1
session ×1
sql-server ×1
t-sql ×1