查看运行缓慢的查询的执行计划,我注意到有些节点是索引查找,有些是索引扫描。
索引查找和索引扫描有什么区别?
哪个表现更好?
SQL 如何选择一个?
我意识到这是 3 个问题,但我认为回答第一个会解释其他问题。
Mnesia 与主要的 SQL 数据库实现相比有哪些优势?它与它们有何不同?
我可以使用数据库来保存大量数据而不会明显降低性能吗?
我需要将一大堆(100+)大(数百万行)表从一个 SQL2008 数据库移动到另一个数据库。
我最初只是使用导入/导出向导,但所有目标表都缺少主键和外键、索引、约束、触发器等(身份列也被转换为普通的 INT,但我想我只是错过了向导。)
这样做的正确方法是什么?
如果这只是几个表,我会回到源,编写表定义(包含所有索引等)的脚本,然后在目标上运行脚本的索引创建部分。但是有这么多表,这似乎不切实际。
如果没有太多数据,我可以使用“创建脚本...”向导来编写源代码,包括数据,但是 72m 行脚本似乎不是一个好主意!
请看这段代码:
create table #t1(
id int identity (1,1),
val varchar(10)
);
insert into #t1 values ('a');
insert into #t1 values ('b');
insert into #t1 values ('c');
insert into #t1 values ('d');
Run Code Online (Sandbox Code Playgroud)
现在,每当你执行这个
select *,
( select top 1 val from #t1 order by NEWID()) rnd
from #t1 order by 1;
Run Code Online (Sandbox Code Playgroud)
您将得到一个结果,其中所有行都具有相同的随机值。例如
id val rnd
----------- ---------- ----------
1 a b
2 b b
3 c b
4 d b
Run Code Online (Sandbox Code Playgroud)
我知道一种使用游标循环抛出行并获得不同随机值的方法,但这不是高效的。
一个聪明的解决方案是
select t1.id, t1.val, t2.val
from #t1 t1
join (select …
Run Code Online (Sandbox Code Playgroud) 我有一个 SQL Server 2008 R2 服务器,其中包含一堆当前在兼容级别 90 (2005) 下运行的已发布数据库。
订阅数据库也是 SQL Server 2008 R2,但是目标数据库设置为兼容性级别 100,并且复制工作正常。
如果我更改已发布数据库的兼容性级别,它会以任何方式影响复制,还是只是重新初始化所有订阅并重新启动复制的情况?
我怀疑更改已发布的数据库兼容性级别可能会稍微改变复制存储过程的功能,但我不是 100% 确定。
是这种情况吗?
我在VIEW DEFINITION
为我的一个用户在架构级别适当设置权限时遇到问题。我已经创建了架构TestSchema
并添加了一些表。用户目前有权限设置为访问和修改表(SELECT
,UPDATE
,DELETE
通过等)dbo_datareader
和dbo_datawriter
角色。但是,他们看不到 SSMS 对象资源管理器中的任何表。
我试过授予查看定义的权限:
grant view definition on SCHEMA :: [TestSchema] to [User]
Run Code Online (Sandbox Code Playgroud)
那没有用。我尝试设置表级权限:
grant view definition on [TestSchema].[NewTable] to [User]
Run Code Online (Sandbox Code Playgroud)
那也没有用。然后我尝试了一个全面的资助:
grant view definition to [User]
Run Code Online (Sandbox Code Playgroud)
那确实奏效了;他们现在可以看到TestSchema
,以及他们不应该访问的其他模式。
我的目标是允许用户查看给定模式中的所有表。我如何做到这一点?如果默认情况下我应该能够执行此操作,我应该查看哪些权限才能找到为什么不能执行此操作?
有人可以解释一下解释计划,以及如何获得查询的解释计划。另外,如果有任何可以用作此实用程序的 sql 脚本,那就太好了。
为复制设置发布以允许从备份初始化时有一个选项。我们多年来一直在创建复制数据库,并且总是从备份进行初始化,但从未设置过这个标志(我们几天前才第一次注意到它)。复制一直都没有问题。
我发现很多点击说明需要使用它,但没有说明原因。
有没有人了解这实际上是做什么的?从我的角度来看,这似乎没有必要,但我想我必须错过一些东西。
replication sql-server sql-server-2008-r2 transactional-replication
是否可以在 MySQL 中进行 LDAP 身份验证和授权?有什么要求(MySQL 版本、第三方软件等)?它是如何组织的?
谢谢。
我正在尝试授予使用 DBMS_CRYPTO 的适当权限。
每当我从包中调用它时,它都会给我错误:PLS-00201:必须声明标识符“DBMS_CRYPTO”
用户已有权限:SELECT_CATALOG_ROLE EXECUTE_CATALOG_ROLE SELECT ANY DICTIONARY
并将 DBMS_CRYPTO 上的 EXECUTE 执行到 package_owner。
任何想法我做错了什么?
sql-server ×6
security ×3
oracle ×2
replication ×2
index ×1
migration ×1
mysql ×1
performance ×1
permissions ×1
ssms ×1