相关疑难解决方法(0)

我什么时候应该使用存储过程?

我什么时候应该使用存储过程而不是直接在我的应用程序中编写逻辑?我想获得存储过程的好处,但我也希望我的应用程序逻辑不会分散在数据库和应用程序上.

在参考这个时,你能想到任何经验法则吗?

sql database stored-procedures

46
推荐指数
7
解决办法
2万
查看次数

我应该使用CASCADE DELETE规则吗?

重复:何时/为什么在SQL Server中使用级联?

我总是害怕使用DELETE CASCADE,但随着我越来越自信(懒惰:D),我在想它有多糟糕,最好的做法是使用它还是我应该避免它并清理我的外键等老式方式(带存储过程)?

sql sql-server cascade

36
推荐指数
2
解决办法
5万
查看次数

Postgres外键'on update'和'on delete'选项如何工作?

任何人都可以提供这些功能的明确解释/示例,以及何时使用它们?

sql postgresql database-design cascade foreign-keys

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

依赖外键级联是不是很糟糕?

我参与的项目的首席开发人员表示依靠级联删除相关行是不好的做法.

我不知道这有多糟糕,但我想知道你对它是否/为什么的看法.

mysql sql database-design cascade

16
推荐指数
4
解决办法
7115
查看次数

SQL Server:如何知道是否有任何行引用要删除的行

如果任何行引用要通过FK删除的行,则无法删除行.

在执行DELETE语句之前,是否可以知道是否有任何行引用要删除的行?

sql t-sql sql-server referential-integrity foreign-keys

15
推荐指数
1
解决办法
6418
查看次数

什么时候最好不要使用内连接?

我有两张桌子:

table1 (id, name, connte)
table2 (id, name, connte)
Run Code Online (Sandbox Code Playgroud)

他们通过连接table1.conntetable2.connte.每个都包含100条记录.

现在,如果我想从table1中删除id = 20的记录及其在table2中的相应子项,那么最好是执行以下操作:

   DELETE d1,d2 FROM table1 d1 INNER JOIN table2 d2 ON d1.connte= d2.connte WHERE d1.id = 20
Run Code Online (Sandbox Code Playgroud)

或以下:

  select connte from table1 where id = 20
  --Store connte in a variable say aabc--
  delete from table2 where connte = aabc   -> execute this first
  delete from table1 where id = 20    -> execute this second
Run Code Online (Sandbox Code Playgroud)

如果我想要删除的记录只有一个父项和一个子项(这里是table1.id = 20),那么对整个表进行内连接是不是很昂贵?

我正在从JAVA(所以JDBC)运行此查询,因此对于上述条件,运行多个查询或内部联接是否更昂贵(性能明智)?

注意:假设表没有参照完整性.所以,我没有使用级联删除.

mysql sql-server optimization performance jdbc

6
推荐指数
1
解决办法
1034
查看次数

使用 JPA 或数据库内部的级联删除/更新?

性能是关键:在数据库内部级联删除/更新还是让 Hibernate/JPA 处理它更好?

如果级联在 DBMS 内部,这会影响查询数据的能力吗?

如果这很重要,我正在使用 HSQLDB。

sql hibernate jpa cascade hsqldb

5
推荐指数
1
解决办法
4658
查看次数