看起来SQL Server不会自动使用CHECKSUM /哈希索引,除非CHECKSUM列明确包含在查询的搜索参数中.这是一个问题,因为我不控制查询表的应用程序,我可能不会破坏它们的性能.
有没有办法让SQL Server使用新的CHECKSUM /哈希索引而不修改查询以包含新的CHECKSUM /哈希列?
CREATE TABLE big_table
(
id BIGINT IDENTITY CONSTRAINT pk_big_table PRIMARY KEY,
wide_col VARCHAR(50),
wide_col_checksum AS CHECKSUM(wide_col),
other_col INT
)
CREATE INDEX ix_checksum ON big_table (wide_col_checksum)
Run Code Online (Sandbox Code Playgroud)
插入一些测试数据:
SET NOCOUNT ON
DECLARE @count INT = 0
BEGIN TRANSACTION
WHILE @count < 10000
BEGIN
SET @count = @count + 1
INSERT INTO big_table (wide_col, other_col)
VALUES (SUBSTRING(master.dbo.fn_varbintohexstr(CRYPT_GEN_RANDOM(25)), 3, 50), @count)
IF @count % 1000 = 0
BEGIN
COMMIT TRANSACTION
BEGIN TRANSACTION
END
END …Run Code Online (Sandbox Code Playgroud) sql-server indexing hash sql-server-2008 database-performance
从没有存储varchar或其他可变长度数据的表中读取通常会更快吗?在MySQL中,这更快,因为它可以准确计算磁盘上存储行的位置.
我有一个大查询(在我的查询构建器中)和很多左连接.所以我得到他们的评论和标签等文章.假设我有以下dql:
$dql = 'SELECT blogpost, comment, tags
FROM BlogPost blogpost
LEFT JOIN blogpost.comments comments
LEFT JOIN blogpost.tags tags';
Run Code Online (Sandbox Code Playgroud)
现在让我们说我的数据库有超过100个博客帖子,但我只想要前10个,但是包含那些10及其所有标签的所有评论,如果它们存在的话.如果我使用setMaxResults它限制行.所以我可能得到前两个帖子,但最后一个帖子缺少一些评论或标签.所以跟随不起作用.
$result = $em->createQuery($dql)->setMaxResults(15)->getResult();
Run Code Online (Sandbox Code Playgroud)
使用doctrine2.2附带的几乎没有文件记录的分页解决方案对我来说并不是真的有效,因为它太慢了,我也可以加载所有数据.
我在Stackoverflow文章中尝试了解决方案,但即使该文章仍然缺少最佳实践,所提出的解决方案也非常慢.
对于如何做到这一点,是否有最佳实践?没有人在生产模式下使用Doctrine2.2吗?
pagination subquery query-builder database-performance doctrine-orm
列长度的倍增因子是否会以某种方式影响数据库性能?
换句话说,以下两个表的性能有什么区别:
TBL1:
- CLMN1 VARCHAR2(63)
- CLMN2 VARCHAR2(129)
- CLMN3 VARCHAR2(250)
Run Code Online (Sandbox Code Playgroud)
和
TBL2:
- CLMN1 VARCHAR2(64)
- CLMN2 VARCHAR2(128)
- CLMN3 VARCHAR2(256)
Run Code Online (Sandbox Code Playgroud)
我们是否应该总是尝试将列的长度设置为某个功率,2或者只考虑最大值?
一些开发人员声称数据库中列长度的倍增因子之间存在某种联系,因为它影响Oracle如何分配和保存磁盘上的数据并在内存中共享其缓存.有人可以证明或反驳这一点吗?
我有一张包含2百万个寄存器的表,但它会很快增长.基本上,该表包含具有相应描述符的图像的兴趣点.当我尝试执行选择空间上接近查询点的点的查询时,总执行时间会花费太长时间.更确切地说,持续时间/提取= 0.484秒/ 27.441秒.查询非常简单,只返回约17000行.
我的查询是:
SELECT fp.fingerprint_id, fp.coord_x, fp.coord_y, fp.angle,
fp.desc1, fp.desc2, fp.desc3, fp.desc4, fp.desc5, fp.desc6, fp.desc7, fp.desc8, fp.desc9, fp.desc10,
fp.desc11, fp.desc12, fp.desc13, fp.desc14, fp.desc15, fp.desc16, fp.desc17, fp.desc18, fp.desc19,
fp.desc20, fp.desc21, fp.desc22, fp.desc23, fp.desc24, fp.desc25, fp.desc26, fp.desc27, fp.desc28,
fp.desc29, fp.desc30, fp.desc31, fp.desc32
FROM fingerprint fp
WHERE
fp.is_strong_point = 1 AND
(coord_x BETWEEN 193-40 AND 193+40) AND (coord_y BETWEEN 49-15 AND 49+15 )
LIMIT 1,1000000;
Run Code Online (Sandbox Code Playgroud)
这就是我所做的.
key_buffer_size的my.ini,但没有看到太大的变化.我如何减少获取时间?是否可以将其减少到毫秒?
SQL Server数据库中的当前情况
有一个包含以下列的表条目:
此外,应该可以为Entry保存额外的元数据.这些元数据的名称和值应该可以自由选择,并且应该可以在不改变数据库表结构的情况下动态添加这些元数据.每个元数据键可以是以下数据类型之一:
因此,有一个表DataKey来表示具有以下列的元数据名称和数据类型:
在表DataValue中,可以根据元数据键的数据类型插入Entry和DataKey值的每个组合.对于每种数据类型,都有一个可以为空的值列.此表包含以下列:
数据库结构图:

目标
目标是检索满足规范的条目列表,如WHERE子句.如下例所示:
假设:
查询:
... WHERE (KeyName1 = „Test12345“ AND KeyName2 BETWEEN ’01.09.2012 00:00:00’ AND
’01.04.2013 23:59:00’) OR (KeyName3 > 15.3 AND KeyName4 = True)
Run Code Online (Sandbox Code Playgroud)
目标是以非常有效的方式执行这些查询,同时使用大量数据
问题
构建查询时出现第一个问题.通常,查询需要具有可以在WHERE子句中使用的列的集合.在这种情况下,查询中使用的列也是表DataKey中的条目,以便能够动态添加元数据而无需更改数据库表结构.在研究期间,已经发现在运行时使用PIVOT表技术的解决方案.但事实证明,当数据库中存在大量数据时,此解决方案非常慢.
质询
这是一个sql小提琴与描述的数据库结构和一些示例数据:http://www.sqlfiddle.com/#!3/d1912 / 3
有没有人知道Hive中左连接与内连接的性能是否有差异,通过hive.auto.convert.join = True启用Map Join?
外连接提供了更多挑战.由于map-join运算符只能流式传输一个表,因此流表必须是所有行都需要的表.对于左外连接,这是连接左侧的表; 对于右外连接,右侧的表等.这意味着即使内连接可以转换为地图连接,也无法转换外连接.如果除了需要流式传输的表之外的表可以适合大小配置,则只能转换外部联接.
似乎这是说(a)外连接根本无法转换为内连接,(b)只有在不需要流式传输的表是"左连接"表时才能转换它(S).有谁知道它是哪一个?
另外,在Hive中INNER JOIN和LEFT JOIN的性能是否存在差异,就像在SQL中一样?当涉及多个左连接时,这种差异是否会变得更加放大(或者,或者,首先开始存在)?我问的原因是我正在考虑在一些左连接查找表中添加几个虚拟条目以将我的连接转换为内部...直观地看起来它可能会有所不同,性能明智,但我找不到任何文档或讨论无论如何.好奇,如果有人有这方面的经验.
我的网站有很大的读取流量.比写入流量重很多.
为了提高我的网站的性能,我想到了主/从数据库配置.
在octupus gem似乎提供我想要的,但因为我的应用是巨大的,我不能去虽然数百万行源代码的更改查询分发(发送读取查询从服务器和写入查询主服务器).
MySQL Proxy 似乎是解决此问题的好方法,但由于它是alpha版本,我不想使用它.
所以我的问题是什么是跨主/从服务器分割读/写查询的最佳方法?
是否可以在不使用rails中的任何gems的情况下拆分读/写查询?
mysql ruby-on-rails master-slave database-performance octopus
实施一个Android +火力地堡的应用程序,其具有多对多的关系:用户< - >窗口小部件(窗口小部件可被共享的多个用户).
注意事项:
实现提取(join-style)的方法之一是遵循以下建议:https://www.firebase.com/docs/android/guide/structuring-data.html(" Joining Flattened Data"):
// fetch a list of Mary's groups
ref.child("users/mchen/groups").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot snapshot, String previousChildKey) {
// for each group, fetch the name and print it
String groupKey = snapshot.getKey();
ref.child("groups/" + groupKey + "/name").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
System.out.println("Mary is a member of this group: " + snapshot.getValue());
}
@Override
public void onCancelled(FirebaseError firebaseError) { …Run Code Online (Sandbox Code Playgroud) android join database-performance firebase firebase-realtime-database
这是我的表架构:
CREATE TABLE tickers (
product_id TEXT NOT NULL,
trade_id INT NOT NULL,
sequence BIGINT NOT NULL,
time TIMESTAMPTZ,
price NUMERIC NOT NULL,
side TEXT NOT NULL,
last_size NUMERIC NOT NULL,
best_bid NUMERIC NOT NULL,
best_ask NUMERIC NOT NULL,
PRIMARY KEY (product_id, trade_id)
);
Run Code Online (Sandbox Code Playgroud)
我的应用程序在“ticker”频道上订阅了 Coinbase Pro 的 websocket,并在收到消息时在行情表中插入一行。
该表现在有近 200 万行。
我认为运行SELECT DISTINCT product_id FROM tickers会很快,但它需要大约 500 到 600 毫秒。这是来自的输出EXPLAIN ANALYZE:
HashAggregate (cost=47938.97..47939.38 rows=40 width=8) (actual time=583.105..583.110 rows=40 loops=1)
Group Key: product_id
-> Seq Scan …Run Code Online (Sandbox Code Playgroud) sql postgresql query-optimization database-performance postgresql-performance
mysql ×2
performance ×2
sql ×2
sql-server ×2
android ×1
database ×1
doctrine-orm ×1
firebase ×1
hadoop ×1
hash ×1
hive ×1
indexing ×1
join ×1
left-join ×1
master-slave ×1
octopus ×1
oracle ×1
pagination ×1
postgresql ×1
sqlite ×1
subquery ×1
t-sql ×1