数据库管理员

希望提高数据库技能并向社区中的其他人学习的数据库专业人员的问答



2
这是Oracle中新的通用模式哪里存在(选择NULL FROM…)?
多年前,写 where exists (Select * from some_table where some_condition) 去年,我注意到许多t-sql脚本切换为使用数字1而不是星号 where exists (Select 1 from some_table where some_condition) 就这样,我看到了这个Oracle示例 WHERE EXISTS (SELECT NULL FROM ... 这是Oracle的常见模式吗?以及使用此类功能的性能参数。

3
通过使用存储过程处理数据而不是将数据存储到检索后的函数中,是否可以提高性能?
标题进行了总结。我对PHP相当满意,并且可以轻松地使用MySQL的值来使其满足我的需要,但是为了扩展我的知识,我一直在想,这是否可能是一种更有效的技术。长跑。它们是否相等(由于最后的处理量大致相同),还是在某些情况下一个呈现出明显的优势?

3
如何在表级别记录Access中的数据更改?
我支持非营利组织的Access数据库。我们遇到了一些数据神秘变化的问题,关于它是由不是最懂计算机的用户还是我的某些后台处理引起的,引起了一些友好的辩论。 我为这些情况在UI级别上添加了一些检查,但是我想在数据库表级别上进行一些检查,以记录更改某些字段时的情况。通过这种方式,我将知道该更改是由用户启动还是仅由后台运行的更新查询启动。通常,我会使用on update触发器,但据我所知Access不支持触发器。Access中是否还有其他可用的日志记录或类似触发器的功能?


3
JOIN语句的输出是什么样的?
我一直想使用联接一段时间,但是我在可视化输出时遇到了麻烦,因此我知道如何使用它。 假设我有2张桌子: CREATE TABLE Cities ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, city tinyblob ); CREATE TABLE Users ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, username TINYBLOB, city INT UNSIGNED, FOREIGN KEY (city) REFERENCES Cities (id) ); 如果我的应用程序要运行SQL查询以获取用户的个人资料数据,我将如何使用联接来获取与用户记录相关联的城市,输出的记录将如何显示?

8
在开发箱上为开发人员授予SA特权
尽管有强烈的抗议,我们的管理层还是决定必须在开发服务器上授予开发团队“ sa”权利。问题是我们DB支持小组仍然负责维护此框。 现在,我们已经被委托为具有这些增强的特权的开发团队提供了一个“要注意事项”清单。 请添加到此列表: 做-将活动限制在正在开发的数据库中 不要 - 更改任何SQL实例设置 sp_configure(包括cmdshell) 添加/更改/删除任何安全设置 添加/更改/删除数据库对象 添加/更改/删除服务器对象,例如备份设备和链接的服务器 添加/更改/删除复制 添加/更改/删除维护计划 触摸任何不属于您的团队的数据库 任何可用于跟踪这些用户活动的工具的指针将不胜感激。

4
VM上的单核SQL Server
最近,我们的学区已将多台服务器从2005版升级到2016年,并且从物理服务器升级到了VM服务器。 我们的基础架构团队为单核提供了用于SQL Server安装的VM服务器。 我试图向该部门负责人解释说,SQL Server“讨厌”在单个内核上,他想看到“证明”。我提供的数据都没有满足他的证明要求,因此他要求提供一些文章,说明为什么VM SQL Server无法在单个内核上有效运行。 您为此使用什么文章? 任何对我的帮助对我来说都将不胜感激!

1
使用两个LEFT JOIN还是将AND与单个LEFT JOIN一起使用?
使用两个LEFT JOINs即 SELECT <some columns> FROM Table1 AS t1 LEFT JOIN Table2 AS t2 ON <condition1> LEFT JOIN Table2 AS t3 ON <condition2> 这与AND单人使用相同LEFT JOIN吗?即 SELECT <some columns> FROM Table1 AS t1 LEFT JOIN Table2 AS t2 ON <condition1> AND <condition2> 两者相同还是不同(一般而言)?

3
可从CLI访问Mac OS X 10.10 mySQL 5.6.26,但不能访问端口3306
我今天在Mac上重新安装了mySQL 5.6.26。我能够按预期从Terminal.app访问mySQL,但是我无法使mySQL工作台连接到127.0.0.1端口3306。真正令我震惊的是,即使在本地也无法连接到此端口(nc -z 127.0。 0.1 3306)。 长话短说,mySQL系统首选项窗格在端口330 7上为mySQL创建了启动守护程序。/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist 我不确定为什么会这样...我所做的所有其他安装都是在3306上进行的。尽管我会留下一条注释,以免其他人不必要地研究为何OS X的防火墙在实际运行时“阻塞”了端口不是。此外,即使此LD硬编码为3306,它似乎也会覆盖my.cnf中的端口。 希望这可以帮助! bash-3.2# defaults read /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist { Disabled = 0; ExitTimeOut = 600; GroupName = "_mysql"; KeepAlive = 1; Label = "com.oracle.oss.mysql.mysqld"; LaunchOnlyOnce = 0; ProcessType = Interactive; Program = "/usr/local/mysql/bin/mysqld"; ProgramArguments = ( "/usr/local/mysql/bin/mysqld", "--user=_mysql", "--basedir=/usr/local/mysql", "--datadir=/usr/local/mysql/data", "--plugin-dir=/usr/local/mysql/lib/plugin", "--log-error=/usr/local/mysql/data/mysqld.local.err", "--pid-file=/usr/local/mysql/data/mysqld.local.pid", …
7 mysql  mac-os-x 

1
重新运行特定的实际查询计划
我已经捕获了特定查询的实际查询计划。 之后,我更改了一些内容(包括更新统计信息)并重新运行了该特定查询。现在,实际的查询计划有所不同(这很有意义)。 现在查询运行速度快得多。我很好奇新的执行计划是否与此有关,因为其他更改(IO设置更改,VM设置更改,sql实例重启等)也可能导致性能提高。为了对此进行测试,我想再次运行查询,并尝试强制SQL Server使用旧的执行计划。 问题:有没有一种方法可以使用用户提供的执行计划重新运行查询,甚至可以直接从这样的计划运行查询? 这是我试图弄清楚的一件事: 我搜索了我们在办公室可获得的书籍(《Professional SQL Server 2012内部和故障排除》,《查询Microsoft SQL Server 2012》); Google搜索,例如“根据特定查询计划运行查询” DBA.SE搜索,例如“执行查询计划”和“重新运行执行计划” 最后,一个回答了我很多次的问题:在单击“发布您的问题”之前,请仔细检查“可能已经有了答案的问题” :-) 底线是:这可能吗?如果是这样:如何?

3
SQL开发人员:plsql的安装调试器
我正在尝试远程调试pl / sql。但是我不能-数据库返回错误。我应该怎么做才能解决此问题并开始调试? ORA-30683: failure establishing connection to debugger ORA-12541: TNS:no listener ORA-06512: at "SYS.DBMS_DEBUG_JDWP", line 68 ORA-06512: at line 1 UPD 我正在尝试调试远程服务器上的过程。在本地计算机上,我仅安装了sql developer。

4
MySQL元数据功能来获取查询中的预计列类型?
是否可以从MySQL 查询中获取字段类型,就像使用SHOW COLUMNS命令从表中获取字段类型一样?例如来自派生表, SELECT x -- presumedMetaFn(x) -- returns "int" FROM ( SELECT 1 AS x UNION SELECT 2 ) AS t; 给定以上查询,是否存在可以用来获取x类型的函数或东西?PostgreSQL通过系统信息功能使其可用pg_typeof SELECT x, pg_typeof(x) FROM ( VALUES (1),(2) ) AS t(x); x | pg_typeof ---+----------- 1 | integer 2 | integer (2 rows) 我不是在表上寻找元数据,而是从查询结果中寻找。 随着psqlPostgreSQL的11+,这也可以通过运行\gdesc查询后。
7 mysql  metadata 

2
在数据集查询中设置NOLOCK提示的选项
一些情况: 首先,我们编写报告只是“直截了当”,在查询中没有任何锁定提示。对于较大的报告,这有时会导致锁定问题。在第一,我们通过使用补救这WITH (NOLOCK)提示在查询表。 因为(a)它是相当突兀,和(b)很容易忘记一个表的提示,我们搬到了第二种方法设置TRANSACTION ISOLATION LEVEL到READ UNCOMMITTED每个数据集的查询的顶部(这是罚款)。 您可能会猜到,忘记其中一个数据集的提示仍然很容易。因此,这导致了一个问题: 问题:与报告查询一起发送NOLOCK提示的选项有哪些? PS。我意识到这在某种程度上是一个XY问题(我还有很多其他的X选择,例如优化查询,不对操作数据库进行报告等),但是尽管如此,它还是试图使之成为一个有效的问题。 选项: 以下是上述选项,并添加了一些选项,我很好奇它们是否可以工作: WITH (NOLOCK)为每个表设置提示。(突兀,很容易忘记) 将READ UNCOMMITTED整个查询的隔离级别设置为。(仍然容易忘记) 是否可以在报告级别指定?例如,确保一个报表的所有数据集查询都将不锁定地运行。 是否可以在其他SSRS级别上指定它?例如,可能是为某个报表文件夹设置此设置,还是使用扩展名? 是否可以在数据源/连接字符串级别指定此名称?例如,所有相关报告是否都使用特定的“无锁数据源”? 与上一个选项相关:也许可以为特定的“ no-lock-sql-user”(在连接中使用的那个)指定默认的锁定提示? ??? 哪些选项可行?有没有我错过的选择?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.