小编Rol*_*DBA的帖子

为什么使用 int 作为查找表的主键?

我想知道为什么我应该使用 int 作为查找表的主键,而不是仅仅使用查找值作为主键(在大多数情况下是一个字符串)。

我知道使用 nvarchar(50) 而不是 int 会使用更多的空间,如果它链接到一个有很多记录的表。

另一方面,直接使用查找值基本上可以避免我们进行连接。我可以想象,如果总是需要加入,这将是一个很大的节省(我们正在开发一个网络应用程序,所以这很重要)。

除了“标准操作”之外,使用 int 主键(特别是对于查找表)有什么优势?

sql-server primary-key

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

用户 'root'@'%' 的访问被拒绝

我以前在 MySQL 中访问 root 用户就好了。但最近,我再也不能了。

我可以正常登录:

 mysql -u root -p
Run Code Online (Sandbox Code Playgroud)

这是登录后的mysql状态:

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.5.28, for debian-linux-gnu (i686) using readline 6.2

Connection id:      37
Current database:   
Current user:       root@localhost
SSL:            Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:     5.5.28-0ubuntu0.12.04.3 (Ubuntu)
Protocol version:   10
Connection:     Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:        /var/run/mysqld/mysqld.sock
Uptime:         4 min 16 sec

Threads: 1 …
Run Code Online (Sandbox Code Playgroud)

mysql authentication users

29
推荐指数
4
解决办法
18万
查看次数

如何在转储之前确定转储文件的大小?

在使用 mysqldump 之类的东西之前,如何确定或估计 SQL 转储文件的大小?

mysql mysqldump backup export database-size

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

如何加入两个表以获取第二个表中缺失的行

在一个简单的投票系统中

CREATE TABLE elections (
election_id int(11) NOT NULL AUTO_INCREMENT,
title varchar(255),

CREATE TABLE votes (
election_id int(11),
user_id int(11),
FOREIGN KEYs
Run Code Online (Sandbox Code Playgroud)

为了获取用户投票的选举列表,使用以下 JOIN

SELECT * FROM elections
JOIN votes USING(election_id)
WHERE votes.user_id='x'
Run Code Online (Sandbox Code Playgroud)

但是如何获取用户未投票的选举列表?

join select

29
推荐指数
3
解决办法
18万
查看次数

在运行时切换 binlog 格式的最安全方法是什么?

由于以下警告mysqld.log

[警告] 使用语句格式写入二进制日志的不安全语句,因为 BINLOG_FORMAT = STATEMENT。该语句是不安全的,因为它使用了 LIMIT 子句。这是不安全的,因为无法预测包含的行集。

我想将复制格式切换为MIXED.

但根据 MySQL 文档:

当存在任何临时表时,不建议在运行时切换复制格式,因为仅在使用基于语句的复制时才会记录临时表,而使用基于行的复制时不会记录它们。

那么,问题是如何确定是否存在任何临时表来安全地切换二进制日志格式?

mysql replication binlog

28
推荐指数
2
解决办法
5万
查看次数

在 MySQL 中创建物化视图的最佳方法

我正在使用 MySQL 5.6。我无法像在 Oracle 中那样创建物化视图。我见过一两个像 Flexview 这样的解决方案。

谁能告诉我在 MySQL 中创建物化视图的最佳方法(如 Oracle 中的自动刷新),并且复杂性最低?

mysql view materialized-view mysql-5.6

28
推荐指数
2
解决办法
5万
查看次数

如何更改 SQL Server 排序规则

如何更改整个服务器和特定数据库的 SQL Server 2008 R2 Express 默认排序规则?

有没有办法使用 SQL Server Management Studio 的可视化界面来做到这一点?在服务器属性窗口(以及相应的数据库属性窗口)中,此属性不可编辑。

sql-server-2008 sql-server collation

27
推荐指数
3
解决办法
7万
查看次数

为什么从 MySQL 5.6 开始默认禁用 query_cache_type?

我们已经升级到 MySQL 5.6 并且开始看到 db server 的负载显着增加,最后发现 query_cache_type从 5.6 开始默认为 off start。

我们再次启用它并看到负载减少,为什么从 MySQL 5.6 开始默认禁用此值?我在启用它时看不到问题。

mysql mysql-5 mysql-5.6 query-cache

27
推荐指数
2
解决办法
4万
查看次数

是否为不同的产品类型创建单独的表?

我正在设计一个数据库,我正在重新考虑我最初的设计决定......

产品类型如下... 型号、零件、替换零件套件和选项。

选项 A(第一个设计):我计划为上述产品类型设置单独的表格。我想说每个表中大约 75% 的字段是相同的。

我将每个产品类型创建为单独的表,因为我需要在它们之间创建关联。例如,一个模型可以有很多选项,一个选项可以有很多模型。一个选项也可以有很多部分,一个部分可以有很多选项……等等……

选项 B:我可以创建一个名为 Product 的表格,而不是单独的表格,其中包含模型、零件、替换零件套件和选项。我可以有一个称为 type 的字段来区分模型、选项等。我认为不利的一面是某些产品类型永远不会使用几个字段(留空)。我猜这就是“非最佳实践”发挥作用的地方。

选项 B 将大大降低数据库设计的复杂性。在提取数据进行查询时,我也不必担心引用一堆表......

database-design database-recommendation

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

mysqldump 与 INSERT ... ON DUPLICATE

我想将数据从一个数据库合并到另一个数据库。所以我创建转储,mysqldump然后将其导入另一个数据库(具有相同的表结构)。在这种情况下,我没有任何问题(例如重复条目或其他问题)。

但是为了测试目的我做了一些合并,稍后我会做最终合并。所以,我想执行几次合并(数据可能会更改)。请注意,我的表中的行永远不会删除,只能插入或更新。

我可以使用 ON DUPLICATE 选项创建 mysqldump 吗?或者我可以合并插入新数据并更新修改数据的转储?

当然,我可以ON DUPLICATE手动插入转储,但我想自动化合并过程。

mysql mysqldump backup

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