数据库管理员

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

2
为什么mysql使用错误的索引来按查询排序?
这是我的表,具有约10,000,000行数据 CREATE TABLE `votes` ( `subject_name` varchar(32) COLLATE utf8_unicode_ci NOT NULL, `subject_id` int(11) NOT NULL, `voter_id` int(11) NOT NULL, `rate` int(11) NOT NULL, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`subject_name`,`subject_id`,`voter_id`), KEY `IDX_518B7ACFEBB4B8AD` (`voter_id`), KEY `subject_timestamp` (`subject_name`,`subject_id`,`updated_at`), KEY `voter_timestamp` (`voter_id`,`updated_at`), CONSTRAINT `FK_518B7ACFEBB4B8AD` FOREIGN KEY (`voter_id`) REFERENCES `users` (`id`) ) …

3
如何多次连接到同一张表?
我有两个表,“ hierarchy_table”和“ name_table”。 层次结构表包含一个具有多个父级和子级的对象。每个父母和孩子都由id引用。 | object_id | parent_id_1 | parent_id_2 | child_id_1 | child_id_2 | ----------------------------------------------------------------------------- | 1234 | 9999 | 9567 | 5555 | 5556 | ----------------------------------------------------------------------------- 等级表中的每个对象ID在名称表中都有一个条目: | name_id | name | -------------------------- | 1234 | ABCD | -------------------------- | 9999 | ZYXW | -------------------------- | ... 如何将hierarchy_table中的每个ID多次连接到name_table,以便可以得到填充每个名称的结果? …

3
计算总和(列)
我有这段代码,用于总结某个商品(itemid)的数量及其产品日期代码(proddte)。 select sum(qty), itemid, proddte from testtable where .... group by itemid, proddte 我想做的就是qty不计其数地求和itemid/proddte。我努力了: select sum(qty), itemid, proddte, sum(qty) over() as grandtotal from testtable where .... group by itemid, proddte 但是它说我也应该qty在group by条款中。如果这样做,结果将不会与预期结果相同。 它不一定需要表示为单独的列,每一行中的值都相同。只要我可以显示整体总数,任何表示形式都可以接受。
9 sql-server  sum 

1
索引列顺序的WHERE-JOIN-ORDER-(SELECT)规则是否错误?
我正在尝试将此(子)查询改进为更大查询的一部分: select SUM(isnull(IP.Q, 0)) as Q, IP.OPID from IP inner join I on I.ID = IP.IID where IP.Deleted=0 and (I.Status > 0 AND I.Status <= 19) group by IP.OPID Sentry Plan Explorer指出了由上面的查询执行的一些相对昂贵的表dbo。[I]键查找。 表dbo.I CREATE TABLE [dbo].[I] ( [ID] UNIQUEIDENTIFIER NOT NULL, [OID] UNIQUEIDENTIFIER NOT NULL, [] UNIQUEIDENTIFIER NOT NULL, [] …

4
如何禁用烦人的MySql更新控制台
我已经安装了mysql 5.7,并且有时(每隔几天一次)会查找更新(据我了解)。控制台窗口将打开几秒钟,然后消失。不在乎,这次我正在看电影,并且此控制台位于播放器的顶部。真的很烦人,为什么MySql以这种用户不友好的方式进行更新?我可以配置它以静默方式进行吗?
9 mysql  windows 

1
MySQL->遍历表,在每个条目上运行存储过程
我有一个包含“书籍”(儿童短篇小说)的数据库,对书籍中每个单词的字数统计将非常有用。 我想出了如何使用以下方法获得每个单词的单词计数: SELECT SUM ( ROUND ( (LENGTH(pageText) - LENGTH (REPLACE (pageText, "Word", ""))) /LENGTH("Word") ) ) FROM pages WHERE bookID = id; 这对于计数单词非常有用。但是,这需要我仔细阅读每本书,找出每个单词,然后通过该功能运行它(我将其保存为存储过程。) 我有一个包含每个单词的表格,没有重复。 我的问题:有没有办法使用存储过程在Words表上执行某种“ for each”循环? 即。向存储过程传递一个书ID和一个单词并记录结果。为每本书做每个字。这样可以节省大量的手动时间...这甚至是我应该从数据库方面做的事情吗?我应该用PHP代替吗? 老实说,任何输入都将不胜感激!


2
数组integer []:如何获取表中所有不同的值并对其进行计数?
我对SQL(PostgreSQL)不太满意。这是我想做的: 我有一张桌子,字段: id SERIAL inet INET ports integer[] id | inet | ports ----+------------+------------ 2 | 1.2.2.1 | {80} 1 | 1.2.3.4 | {80,12} ... 我怎么能够 获取此表中所有使用的“端口”值:80、12 计算特定端口上有多少个Inet地址: 像这样: port | count --------+------------ 12 | 1 80 | 2 ... 如果有人在寻找它的Django版本: class Unnest(Func): function = 'UNNEST' Model.objects \ .annotate(port=Unnest('ports', distinct=True)) …

2
在pgAdmin中的光标处执行语句的键盘快捷方式
在MySQL Workbench中,可以使用键盘快捷键Ctrl+ ENTER在光标处执行语句(用半冒号表示)。 pgAdmin中有类似的快捷方式吗? 对于仅跨一行的SQL查询,我在Dragon NaturallySpeaking中使用了语音命令: Sub Main SendKeys "{End}" Wait(0.3) SendKeys "+{Home}" Wait(0.3) SendKeys "{F5}" End Sub 但是对于跨越多行的SQL查询,我没有任何解决方案。

2
DynamoDB-多个范围键
是否可以将多个字段用作范围键? 假设我有一张表格,其中每一行都由 <A,B,C> ------------------------------- A | B | C | D | E | ------------------------------- A主hash键在哪里 我想B和C作为主range键。 如何在DynamoDB中将两个以上字段用作主键?

1
通过删除运算符哈希匹配内部联接来提高查询性能
在尝试将以下问题的内容应用于我自己的情况时,我有点困惑,因为如果可能的话,如何摆脱运算符哈希匹配(内部联接)。 SQL Server查询性能-无需哈希匹配(内部联接) 我注意到了10%的成本,并且想知道是否可以降低它。请参阅下面的查询计划。 这项工作来自我今天必须调整的一个查询: SELECT c.AccountCode, MIN(d.CustomerSID) FROM Stage.Customer c INNER JOIN Dimensions.Customer d ON c.Email = d.Email OR ( c.HomePostCode = d.HomePostCode AND c.StrSurname = d.strSurname ) GROUP BY c.AccountCode 在添加这些索引之后: --------------------------------------------------------------------- -- Create the indexes --------------------------------------------------------------------- CREATE NONCLUSTERED INDEX IDX_Stage_Customer_HOME_SURNAME_INCL ON Stage.Customer(HomePostCode ,strSurname) INCLUDE (AccountCode) --WHERE HASEMAIL …

2
如果复合索引包含主键,是否应该将其标记为唯一?
给定一些带有主键的表,例如: CREATE TABLE Customers ( CustomerID int NOT NULL PRIMARY KEY, FirstName nvarchar(50), LastName nvarchar(50), Address nvarchar(200), Email nvarchar(260) --... ) 我们在上有一个唯一的主键CustomerID。 传统上,我可能需要一些额外的覆盖索引。例如,通过CustomerID或快速查找用户Email: CREATE INDEX IX_Customers_CustomerIDEmail ON Customers ( CustomerID, Email ) 这些都是我数十年来创建的索引。 不一定要唯一,但实际上是 索引本身的存在是为了避免进行表扫描。它是覆盖索引,以帮助提高性能(该索引不存在作为强制执行唯一性的约束)。 今天,我想起了一些信息-SQL Server可以使用以下事实: 列具有外键约束 列具有唯一索引 约束是可信的 为了帮助它优化查询执行。实际上,根据《SQL Server索引设计指南》: 如果数据是唯一的并且您要强制执行唯一性,那么在相同的列组合上创建唯一索引而不是非唯一索引将为查询优化器提供附加信息,从而可以产生更有效的执行计划。在这种情况下,建议创建唯一索引(最好通过创建UNIQUE约束)。 鉴于我的多列索引包含主键,因此该复合索引实际上将是唯一的。这不是我特别需要SQL Server在每次插入或更新期间强制执行的约束;但是事实是该非聚集索引是唯一的。 将这个事实上的唯一索引标记为实际上唯一有什么好处吗? 在客户上创建唯一索引IX_Customers_CustomerIDEmail ( 客户ID, 电子邮件 …

4
按表格显示数据和磁盘使用明细
我有一个SQL Server 2008 R2数据库,已由多个已部署程序使用。 问题:是否有一种简单的方法来显示数据库中所有表的每个表占用多少空间,并区分逻辑空间和磁盘空间? 如果我使用SSMS(Management Studio),则显示的数据库存储属性为167 MB,其中“可用”为3 MB(大约正确的大小,但我担心可用的3 MB)-这是一个值得关注的限制吗,假设我知道我有足够的磁盘空间?) 我可以深入研究每个表格,但这需要永远做。 我知道我可以编写自己的查询并进行测试,但是我想知道是否已经有一种简便的方法(内置的?)。

1
在PostgreSQL中压缩序列
我id serial PRIMARY KEY在PostgreSQL表中有一列。id由于我已删除相应的行,因此缺少许多。 现在,我想通过重新启动序列并以保留id原始id顺序的方式重新分配s 来“压缩”表。可能吗? 例: 现在: id | data ----+------- 1 | hello 2 | world 4 | foo 5 | bar 后: id | data ----+------- 1 | hello 2 | world 3 | foo 4 | bar 我尝试了StackOverflow答案中提出的建议,但没有成功: # alter sequence t_id_seq restart; ALTER SEQUENCE # …

1
I / O在数据库上冻结,并且I / O每天在数据库中恢复为完整备份并在日志中恢复
我想说的是,每天我都会在日志文件中收到该消息。 首先,I / O被冻结在数据库(DatabaseName)上,消息出现在日志中。消息就像 I / O被冻结在数据库(DatabaseName)上。不需要用户操作。但是,如果没有立即恢复I / O,则可以取消备份。 然后在Database(DatabaseName)上恢复I / O消息,如下所示 在数据库(DatabaseName)上恢复了I / O。无需用户操作。 最后,像这样的消息,备份成功完成了数据库 无需用户操作 它是我的生产审核数据库,并且具有软件环境,例如: Windows Server 2012 R2 SQL Server 2012 VMware Tools 我的生产数据库“ 恢复模型 ”是“ 完整 ”恢复模型。并且从SQL Server中的登录ID设置了维护计划备份。它对所有数据库都具有“ sysadmin ”特权。 备份已通过“维护计划”备份在特定的时间表进行设置,例如每天下午4.00。而且Always Backup会按计划的时间间隔成功完成。 为什么会在计划备份时间生成此类日志消息。这类消息是否会影响我的生产数据库性能。我的生产数据库中的(备份/还原)数据一致性中是否有问题。 任何建议将不胜感激。

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.