标签: database-performance

主索引与二级索引:性能差异

我有一个小问题:主索引和二级索引的性能有什么区别?是什么导致了这种差异?

我在谷歌搜索,我已经看到二级索引存储在另一个表中,所以这会减慢所有操作..但是还有其他一些原因可以证明这种性能下降是合理的吗?

非常感谢

mysql database-performance database-indexes

1
推荐指数
1
解决办法
4816
查看次数

SQL Server插入性能

假设我在列上有一个带有聚簇索引的下表(例如,a)

CREATE TABLE Tmp
(
    a int,
    constraint pk_a primary key clustered (a)
)
Run Code Online (Sandbox Code Playgroud)

然后,让我们假设我有两组非常大的行要插入到表中.

  • 第1组)值依次增加(即{0,1,2,3,4,5,6,7,8,9,...,999999997,999999998,99999999})
  • 第2组)值依次递减(即{99999999,999999998,999999997,...,3,2,1,0}

你认为在第一组和第二组中插入值之间会有性能差异吗?如果是这样,为什么?

谢谢

sql-server clustered-index database-performance insert-statement database-fragmentation

1
推荐指数
1
解决办法
1881
查看次数

避免在SQLQueries中使用LIKE

我可以在查询中使用什么而不是LIKE?由于LIKE对搜索条件的性能影响较差.

我的情景:

SELECT 
    *
FROM 
    MetaDataTag
WHERE 
    Name LIKE 'SUN RCC%'
Run Code Online (Sandbox Code Playgroud)

我不能使用包含作为表格上的全文索引,我不选择.

建议将非常有帮助.

sql t-sql sql-server database-performance sql-like

1
推荐指数
1
解决办法
189
查看次数

排除 WHERE 子句中的空白和空值

很多时候我必须运行这个查询:

select * from users where name is not null and name != ''
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点。我需要更多的性能,任何建议。我想这是很常见的,所以可能会有一些编译的函数,就像

select * from users where name is present()
Run Code Online (Sandbox Code Playgroud)

使用 PostgreSQL 9 版本。

sql postgresql null database-performance

1
推荐指数
1
解决办法
779
查看次数

MySQL性能 - CHAR(64)vs VARCHAR(64)

在InnoDB数据库中,用于存储将被索引的域名和64个字符长的字段可以是数据类型CHAR(64)或VARCHAR(64),其中第一个将填充数据,因此所有记录的长度相同.显然,这会在速度方面提供一些性能提升,但由于填充也会占用更多的磁盘空间.

从理论上讲,如果没有进行任何台架测试,CHAR(36)确实会提供一些性能提升吗?

mysql database database-performance

1
推荐指数
1
解决办法
2357
查看次数

SQL Server 表简单选择查询耗时太长

我在 MS SQL Server 中有一个简单的表。

CREATE TABLE [dbo].[Personas] (
[Name] varchar(250) NOT NULL,
[ID] varchar(250) NOT NULL,
[IntranetID] varchar(250) NULL,
[eMail] varchar(250) NULL,
[Number] varchar(50) NULL,
[ModifDate] datetime NULL)
ON [PRIMARY];
Run Code Online (Sandbox Code Playgroud)

在将数据再次截断并插入到该表后,我无法执行简单的选择查询或简单的计数查询。进程任务继续运行而没有结束。但是我可以在除了这个表之外的其他表上成功查询。

select * from Personas;
select count(*) from Personas;
Run Code Online (Sandbox Code Playgroud)

我怎么知道发生这种情况的原因以及如何解决?查询中没有错误消息,所以我不知道错误是什么。我如何知道表是否已损坏?

我不是 SQL Server 管理方面的专家,但我尝试在下面执行。我不确定这是否是原因,如果是,如何解决这个问题。

DBCC SQLPERF(logspace)

Result:
Log Size (MB) = 19.6
Log Space Used (%) = 78.79
Status = 0
Run Code Online (Sandbox Code Playgroud)

请帮助。先感谢您。

database sql-server database-administration database-performance sql-server-2012

1
推荐指数
1
解决办法
1万
查看次数

MySql在生产环境中查询慢查询日志

我们在生产环境中使用MySql 5.5.是否可以在生产中打开慢速查询日志?这样做的表现意味着什么?我在这里提到了官方文档,但它没有说明性能.

mysql database-performance

1
推荐指数
2
解决办法
1791
查看次数

优化 InnoDB 插入查询

根据慢查询日志,以下查询(和类似查询)偶尔需要大约 2s 执行:

INSERT INTO incoming_gprs_data (data,type) VALUES ('3782379837891273|890128398120983891823881abcabc','GT100');
Run Code Online (Sandbox Code Playgroud)

表结构:

CREATE TABLE `incoming_gprs_data` (
 `id` int(200) NOT NULL AUTO_INCREMENT,
 `dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 `data` text NOT NULL,
 `type` char(10) NOT NULL,
 `test_udp_id` int(20) NOT NULL,
 `parse_result` text NOT NULL,
 `completed` tinyint(1) NOT NULL,
 PRIMARY KEY (`id`),
 KEY `completed` (`completed`)
) ENGINE=InnoDB AUTO_INCREMENT=5478246 DEFAULT CHARSET=latin1
Run Code Online (Sandbox Code Playgroud)

与此表相关的活动:

  1. 每秒大约有 200 行被插入到这个表中。传入的数据来自不同的来源(因此,它不会发生在一个进程中,而是每秒处理多个进程)。
  2. cron 进程将通过通过获取行来处理这些行SELECT * FROM incoming_gprs_data WHERE completed = 0,处理它们并更新completed = 1
  3. 另一个 cron 进程(每 15 分钟运行一次)将删除已完成的行(即completed …

mysql innodb bulkinsert bulk-load database-performance

1
推荐指数
1
解决办法
1320
查看次数

我应该索引已经是复合索引一部分的各列吗?

我的表中有4列的复合唯一索引和性能问题的查询,它们分别过滤了2列.也许是一个愚蠢的问题,但我是否应该对各个列进行索引以提高性能?谢谢你的帮助!

sql database oracle indexing database-performance

1
推荐指数
1
解决办法
254
查看次数

MySQL上的SQL查询优化

我有以下SQL查询,并想知道是否有一种方法来优化查询.

SELECT * FROM LogEntry WHERE UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(updateTime) > 10;
Run Code Online (Sandbox Code Playgroud)

在updateTime上添加索引可以提高性能,可以做更多的事情来提高性能

mysql sql database-performance

1
推荐指数
1
解决办法
44
查看次数