问题标签 [rdbms-agnostic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - RDBMS 中元数据/标记的键值对:高效存储
我知道键值对不是好的数据库设计,没有规范化等,但是在这种情况下,我相信它们是最合适的解决方案。
我对此的借口和一些背景:大量项目被推入一组表中,并且每个项目都可以用用户可以选择的任意元数据进行标记。用户可以选择元数据,因为他们正在指定他们希望以后如何分类、报告和查看项目。对于这个特定的业务问题,我们(作为系统设计师)不应该说出这些维度是什么。跨项目使用的键集不一致,在某些情况下,某个键的存在将用作过滤条件。
另外一点背景信息,条目将被插入,但不会被更新。最终它们将被删除(按照插入的顺序依次)。
问题“高效存储”:我指的是查询(读取)性能。将使用以下类型的查询:
- 获取具有给定键的项目,任何值
- 获取具有给定键和值的项目
- 获取所有键名的项目
- 获取具有所有键名和值的项目
基本上,考虑到这些选项,哪个是最佳选择?:
选项1
选项 2
(可能还有第三种选择,将键名再次提取到单独的表中以减少冗余,因为给定键名可能存在大量已使用/可能的值,也可能值得考虑)
粗略地说,会有大量重复的键/值匹配。因此,应该提高存储效率。我意识到这是一个开放式问题,但是读取性能呢?如果我也引入这个查询怎么样:?
- 获取给定键的值以“x”开头的项目
如果我可以提供更多说明,请告诉我。
algorithm - 邻接列表的递归查询以在 SQL 中进行预排序树遍历?
我正在将数据从一个数据库模式迁移到另一个。旧模式有一个基于邻接列表的分类系统,带有 id、category 和 parent_id。如果一个类别低于第二个类别,则该类别将第二个的 id 作为其父 id。例如:
新模式具有修改后的前序树遍历算法:
示例取自文章在 MySQL 中管理分层数据。
无论如何,我有能力或编写一个带有递归函数的 php 脚本,它将邻接列表迁移到预排序树结构。基本上对于每一行,它都会插入一个空白的“rgt”值,查找子项,递归地将函数应用于它们,跟踪计数器,然后更新“rgt”值。
但我想在纯 SQL 中做到这一点。但是,我知道的不够多,无法立足。对于初学者,我不知道您是否可以使用递归查询来做到这一点,或者是否有其他方法可以做到这一点。
database - 哪些应用不需要 ACID?
抱歉这个无知的问题,但什么样的应用程序不需要符合 ACID 的数据库服务器?我有一个 SQL Server 背景,ACID 一直“在那里”,现在研究其他 DBMS 让我思考。我能想到的大多数应用程序都需要原子性或隔离性。谢谢!
mysql - 在不影响桌子的情况下对桌子进行重压
我正在寻找一些关于在数据库表上执行繁重的处理/数据挖掘的最佳方法的一般建议,而不影响表上常规站点查询的性能。一些计算可能涉及连接多个表,并涉及复杂的排序和排序。所以“使用更好的索引”并不总是解决方案。
这个问题不是很具体。我正在寻找一种通用方法来解决多年来多次出现的问题。所以我没有要显示的特定表架构,要显示的特定查询。我考虑过首先使用 mysqldump 转储表,然后以不同的名称重新导入表,然后对该临时表执行繁重的运算。我的系统管理员讨厌这个想法,所以我正在寻找人们提出的任何其他解决方案来处理此类问题。
php - 是 MAX、MIN、SUM SQL 命令标准跨不同的 RDBMS
我现在只安装了 MySQL,但是在 PgSQL、MS SQL 等中运行时它们会正常工作吗?
sql - Oracle AS 关键字和子查询
刚发现Oracle不喜欢用AS
关键字给子查询起别名:
我需要让我的 SQL 查询尽可能可移植。删除AS
上述查询中的关键字是否会影响任何其他 RDBMS?
java - 在 RDBMS 中存储 java.math.BigInteger
我需要将 Java 的java.math.BigInteger
数字存储在 SQL 中。我可以放心地假设这些数字将是正数,并且比在创建表时已知2^k
的一些数字要少。k
让我们说k = 256
。
如何将它存储在 RDBMS 中,以便我进行比较(<, >, =
等)。
我目前正在转换为字节数组并将它们存储为VARBINARY(k+1)
.
我也可以将它们存储起来,就VARCHAR
好像这有帮助一样。我需要一种独立于 DBMS 的方式来做到这一点。
EDIT1:跟进下面 JBNizet 的评论。我需要执行以下类型的 SQL 查询:
EDIT2:可以VARCHAR
通过一些努力与词典排序进行比较。但是,增量给出了下面给出的奇怪行为(在 SQLite 上测试):
sql - 添加减号是否会使查询参数无法实现 SARG?
在 SQL 语句中的列引用前添加减号是否会阻止查询处理器使用该列上的现有索引来处理查询?
即,以下是否会在 id 上使用索引(如果存在),还是需要执行表扫描?
对比
这绝对是 SARGable
database - 如何让选择查询更高效?
我在 701 属性(列)上有数百万条记录的客户表。我收到一个包含一行 700 列的 csv 文件。现在,根据这 700 个列值,我必须从表Customers中提取 id 。
现在一种方法很明显,我在 where 子句中触发了一个包含所有 700 个值的选择查询。
我的问题是,如果我首先使用 where 子句中的一个属性获取一个较小的表,然后根据 where 子句中的第二个属性再次获取......并对所有属性重复此过程,会更快吗?或者您能建议任何其他可以使其更快的方法吗?
rdbms - 数据库系统的客户端/服务器架构
数据库系统基础知识中的客户端/服务器架构是什么意思?
我没有从谷歌得到任何正确的答案。如果您提供一些资源,对我来说会更好。