标签: sql

实体框架4从具有多个模式的模型生成数据库

我正在将EntityFramework 4与POCO类一起使用,但我喜欢将数据库划分为单独的模式.虽然我可以先设计数据库,然后生成模型,一切正常,如果我更新模型并选择从模型生成数据库,它会忽略我的所有模式并生成默认情况下的所有表(或者我在下面设置的任何表)数据库架构名称).

是否可以将实体分开并让模型中的generate数据库使用这些模式?

非常感谢任何帮助.我花了几个小时在谷歌上进行实验,我觉得这不可能,但我想我会检查一下.

c# sql schema entity-framework

11
推荐指数
1
解决办法
2327
查看次数

如何从Sproc中识别存储过程的调用者

我有一个已弃用的存储过程,不应再从代码中调用,但有一些系统仍在调用它.这是一个生产服务器,因此我对它进行非常有限的间接访问以执行诊断.

有没有办法确定从sproc中调用特定存储过程的机器?诸如@@ CallingMachineIP或@@ CallingMachineName之类的东西

sql stored-procedures diagnostics sql-server-2008

11
推荐指数
2
解决办法
4884
查看次数

数据库表名:Plural或Singular

SQL数据库表最常见的命名约定是什么?它在历史上是一种方式,现在以另一种方式做得更好吗?现在最常见的做法是什么?

sql database sql-server database-design sql-server-2008

11
推荐指数
3
解决办法
5223
查看次数

第一顺序......那么GROUP BY

我有两个表,一个存储用户,另一个存储用户的电子邮件地址.

  • 表用户:( ,userId,)usernameetc
  • 表USEREMAIL:( , emailId,)userIdemail

我想做一个查询,允许我获取最新的电子邮件地址和用户记录.
我基本上是在寻找一个查询

FIRST ORDER BY userEmail.emailId DESC 
THEN GROUP BY userEmail.userId
Run Code Online (Sandbox Code Playgroud)

这可以通过以下方式完成:

SELECT 
  users.userId
, users.username
, (
     SELECT 
       userEmail.email
     FROM userEmail
     WHERE userEmail.userId = users.userId
     ORDER BY userEmail.emailId DESC
     LIMIT 1
  ) AS email
FROM users
ORDER BY users.username;
Run Code Online (Sandbox Code Playgroud)

但是这会为每一行做一个子查询,效率非常低.(在我的程序逻辑中,做两个单独的查询并将它们"加入"在一起会更快.


为我想要的东西写的直观查询将是:

SELECT 
  users.userId
, users.username
, userEmail.email
FROM users
LEFT JOIN userEmail USING(userId)
GROUP BY users.userId
ORDER BY 
  userEmail.emailId
, users.username;
Run Code Online (Sandbox Code Playgroud)

但是,这不符合我的意愿.(GROUP BY在排序之前执行,因此ORDER …

mysql sql

11
推荐指数
1
解决办法
2万
查看次数

Oracle - 删除表约束而不删除表

我正在进行大型Oracle数据库的批量迁移.第一步是将一大堆表重命名为稍后删除它们的准备(但我现在需要将数据保存在其中).需要删除对它们的任何外键约束 - 它们根本不应连接到数据库的其余部分.如果我现在放弃它们我可以使用CASCADE CONSTRAINTS,但重命名只是改变了约束.

有没有办法可以放弃CASCADE CONSTRAINTS在不丢弃表本身的情况下放下的所有约束?

sql oracle rename constraints table-rename

11
推荐指数
1
解决办法
4万
查看次数

有没有办法反转ActiveRecord :: Relation查询?

假设我们有以下内容:

irb> Post.where(:hidden => true).to_sql
=> "SELECT `posts`.* FROM `posts` WHERE posts.hidden = 1"
Run Code Online (Sandbox Code Playgroud)

我们能以某种方式得到一个倒置的SQL查询吗?

我在寻找什么,应该是这样的:

irb> Post.where(:hidden => true).invert.to_sql
=> "SELECT `posts`.* FROM `posts` WHERE NOT (posts.hidden = 1)"
Run Code Online (Sandbox Code Playgroud)

sql ruby-on-rails arel ruby-on-rails-3

11
推荐指数
4
解决办法
4257
查看次数

避免基于递增键创建聚簇索引

我从mssqlcity.com得到了这个提示.但是,我无法理解它的解释.

避免基于递增键创建聚簇索引

例如,如果表具有声明为IDENTITY的代理整数主键并且在此列上创建了聚簇索引,则每次将数据插入此表时,行都将添加到表的末尾.当添加许多行时,可能发生"热点".当许多查询尝试同时在同一区域中读取或写入数据时,会出现"热点"."热点"导致I/O瓶颈.注意.默认情况下,SQL Server为主键约束创建聚簇索引.因此,在这种情况下,您应该显式指定NONCLUSTERED关键字以指示为主键约束创建非聚簇索引.

在我阅读之前,我想如果我选择一个本质上是随机的列,那就不正确了,因为这会在添加新行时导致不必要的页面重定位.所以,我认为使用排序列是可取的.

在阅读了这个提示之后,我认为它试图说我们并不是真的想要使用直线排序列作为我们的聚簇索引,因为这些写入密集型应用程序会出现I/O瓶颈.

我真的不明白他们所谈论的I/O瓶颈的原因.他们是说共享同一页面的太多操作会减慢磁盘操作的速度吗?这是怎么发生的?有人可以向我解释一下吗?

sql sql-server indexing performance

11
推荐指数
1
解决办法
3171
查看次数

如果表为空,则执行INSERT?

有没有办法在计数条件下进行插入,例如:

INSERT INTO my_table (colname) VALUES('foo') IF COUNT(my_table) < 1
Run Code Online (Sandbox Code Playgroud)

基本上,如果表当前为空,我想插入一个默认记录.我正在使用mysql.

mysql sql

11
推荐指数
1
解决办法
2万
查看次数

从表中的datetime列中选择不同的日期

我有一张桌子

id | message | date_posted
1  | testing | 2011-03-08 03:15:13
2  | testing | 2011-03-06 03:15:13
3  | testing | 2011-03-08 03:15:13
Run Code Online (Sandbox Code Playgroud)

并且需要一个查询,我以desc顺序返回不同日期的列表.我试着像这样制定一个查询

SELECT DISTINCT CAST(`date_posted` AS DATE) AS dateonly FROM table
Run Code Online (Sandbox Code Playgroud)

这给了我约会,但它们并不明显,并且有重复.

有任何想法吗?(使用php/mysql)

主要编辑:

忘了重要的一条信息.我试图根据月份和年份获得独特的日期.

2011-03-08 03:15:13
2011-03-06 03:15:13
2011-03-02 03:15:13
2011-03-01 03:15:13
2011-02-01 03:15:13
Run Code Online (Sandbox Code Playgroud)

所以运行查询只会返回[2011-03-dd,2011-02-01](dd是任何一天)

为没有说明这一点而道歉.

mysql sql

11
推荐指数
3
解决办法
3万
查看次数

在SQL中使用临时表是不好的做法?

也就是说,使用具有一些初始唯一数据的临时表,然后一次填充一个或多个字段.有时它会使代码看起来更具可读性,但它也会导致程序类型的思考.它也比使用派生表或其他方法慢.它在行业中是否气馁?

sql

11
推荐指数
1
解决办法
3590
查看次数