相关疑难解决方法(0)

varchar 大小越小,我的数据库索引的性能是否会更高?

我们使用的是Mysql 5.7

我们在大约 5 亿行的表中的 varchar(255) 列上有一个索引。

select distinct varchar_column from table产生 7 个结果,最大长度为 21。

一位 DBA 顾问建议我们将 varchar 列的长度降低到 21。在测试中降低 varchar 列的大小会缩小索引大小,相当于简单地对表进行碎片整理而不更改架构(例如alter table)。

当我们将长度减少到 17 时,我们看到了稍微好一些的结果。

除了索引大小之外,我们还缺少什么优势吗?

mysql schema index index-tuning mysql-5.7

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

Varchar 索引 - 散列值会使速度更快吗?

VARCHAR(1000)我的表中有一个列。它将包含不保证唯一的字符串。我有一个查询将此列作为子句的一部分进行搜索WHERE IN,列表中的值列表IN ('...')将约为 100。在最初几个月后,该表可能会包含数百万行。我知道建立索引可能会减慢插入速度并可能创建相当大的索引。

问题

  1. 存储值的哈希值并对其进行索引和搜索是否会更快?
  2. 如果不能保证这些值是唯一的,这还有意义吗?
  3. 如果散列值使它们具有一致的长度,那么索引会使查询更快吗?

我正在运行 mysql 5.1 并使用 INNODB 引擎。

mysql index varchar index-tuning

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

MySQL 和 PostgreSQL 中的聚集索引性能考虑

在MySQL/InnoDB中,聚集索引与主键同义,因此选择一个差的主键会影响数据库性能,即使用UUID作为PK是数据库写入的性能杀手。

现在,在 PostgreSQL 中,不存在像 MySQL 中那样的集群限制。如果我选择UUID作为PK有什么影响?PostgreSQL 中是否也像 MySQL 一样存在数据库写入性能杀手?

mysql postgresql performance primary-key clustered-index

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

mysql 如何决定是否可以对 MyISAM 表进行并发插入?

对于“并发插入”,MySQL参考手册有如下解释:

MyISAM 存储引擎支持并发插入,以减少给定表的读写器之间的争用:如果 MyISAM 表在数据文件中没有空洞(中间删除了行),则可以执行 INSERT 语句将行添加到最后SELECT 语句从表中读取行的同时。

http://dev.mysql.com/doc/refman/5.5/en/concurrent-inserts.html

假设我们的数据库“并发插入”参数设置为“自动”(1)。
我们有一个有间隙的 MyISAM 表。当我们插入新行并填补这些空白时,表是否“立即”准备好接受未来插入查询的“并发插入”?

或者我们是否需要在表知道没有间隙之前运行“优化”?

mysql myisam insert

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

当 varchar 效率更高时,为什么数据库具有 char 数据类型?

据我所知的基本区别CHARVARCHAR数据类型,它CHAR占用的固定长度,而VARCHAR占用空间基于正被存储的内容。

但是如果VARCHAR根据存储的内容动态处理空间管理如此有效,为什么数据库支持CHAR数据类型,所有CHAR(n)字段都可以是VARCHAR(n)字段,对吧?

datatypes storage sql-standard

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