我想知道为什么我应该使用 int 作为查找表的主键,而不是仅仅使用查找值作为主键(在大多数情况下是一个字符串)。
我知道使用 nvarchar(50) 而不是 int 会使用更多的空间,如果它链接到一个有很多记录的表。
另一方面,直接使用查找值基本上可以避免我们进行连接。我可以想象,如果总是需要加入,这将是一个很大的节省(我们正在开发一个网络应用程序,所以这很重要)。
除了“标准操作”之外,使用 int 主键(特别是对于查找表)有什么优势?
我以前在 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) 在使用 mysqldump 之类的东西之前,如何确定或估计 SQL 转储文件的大小?
在一个简单的投票系统中
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)
但是如何获取用户未投票的选举列表?
由于以下警告mysqld.log:
[警告] 使用语句格式写入二进制日志的不安全语句,因为 BINLOG_FORMAT = STATEMENT。该语句是不安全的,因为它使用了 LIMIT 子句。这是不安全的,因为无法预测包含的行集。
我想将复制格式切换为MIXED.
但根据 MySQL 文档:
当存在任何临时表时,不建议在运行时切换复制格式,因为仅在使用基于语句的复制时才会记录临时表,而使用基于行的复制时不会记录它们。
那么,问题是如何确定是否存在任何临时表来安全地切换二进制日志格式?
我正在使用 MySQL 5.6。我无法像在 Oracle 中那样创建物化视图。我见过一两个像 Flexview 这样的解决方案。
谁能告诉我在 MySQL 中创建物化视图的最佳方法(如 Oracle 中的自动刷新),并且复杂性最低?
如何更改整个服务器和特定数据库的 SQL Server 2008 R2 Express 默认排序规则?
有没有办法使用 SQL Server Management Studio 的可视化界面来做到这一点?在服务器属性窗口(以及相应的数据库属性窗口)中,此属性不可编辑。
我们已经升级到 MySQL 5.6 并且开始看到 db server 的负载显着增加,最后发现 query_cache_type从 5.6 开始默认为 off start。
我们再次启用它并看到负载减少,为什么从 MySQL 5.6 开始默认禁用此值?我在启用它时看不到问题。
我正在设计一个数据库,我正在重新考虑我最初的设计决定......
产品类型如下... 型号、零件、替换零件套件和选项。
选项 A(第一个设计):我计划为上述产品类型设置单独的表格。我想说每个表中大约 75% 的字段是相同的。
我将每个产品类型创建为单独的表,因为我需要在它们之间创建关联。例如,一个模型可以有很多选项,一个选项可以有很多模型。一个选项也可以有很多部分,一个部分可以有很多选项……等等……
选项 B:我可以创建一个名为 Product 的表格,而不是单独的表格,其中包含模型、零件、替换零件套件和选项。我可以有一个称为 type 的字段来区分模型、选项等。我认为不利的一面是某些产品类型永远不会使用几个字段(留空)。我猜这就是“非最佳实践”发挥作用的地方。
选项 B 将大大降低数据库设计的复杂性。在提取数据进行查询时,我也不必担心引用一堆表......
我想将数据从一个数据库合并到另一个数据库。所以我创建转储,mysqldump然后将其导入另一个数据库(具有相同的表结构)。在这种情况下,我没有任何问题(例如重复条目或其他问题)。
但是为了测试目的我做了一些合并,稍后我会做最终合并。所以,我想执行几次合并(数据可能会更改)。请注意,我的表中的行永远不会删除,只能插入或更新。
我可以使用 ON DUPLICATE 选项创建 mysqldump 吗?或者我可以合并插入新数据并更新修改数据的转储?
当然,我可以ON DUPLICATE手动插入转储,但我想自动化合并过程。
mysql ×6
backup ×2
mysql-5.6 ×2
mysqldump ×2
sql-server ×2
binlog ×1
collation ×1
export ×1
join ×1
mysql-5 ×1
primary-key ×1
query-cache ×1
replication ×1
select ×1
users ×1
view ×1