我有一个唯一值表 ( domains_unique),列domainvarchar(255),有超过 2000 万条记录。
通过保持唯一约束,插入表的最快方法是什么domain?
我决定查询应该是:
INSERT IGNORE INTO domains_table (domain) VALUE ('domain.com')
Run Code Online (Sandbox Code Playgroud)
我应该做domain的主键或者我应该使它成为一个独特的指数?
主键方法:
CREATE TABLE `domains_unique`
(
`domain` varchar(255) NOT NULL
PRIMARY KEY (`domain`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE = utf8_general_ci;
Run Code Online (Sandbox Code Playgroud)
唯一索引方法:
CREATE TABLE `domains_unique`
(
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`domain` varchar(255) NOT NULL
PRIMARY KEY (`id`),
UNIQUE KEY unique_index (`domain`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE = utf8_general_ci;
Run Code Online (Sandbox Code Playgroud)
又怎么会在很大程度上将改变CHARSET,并COLLATION以ascii_bin …
为什么一个有效而另一个无效?
SELECT REPLACE(N'IA?I' ,N'?','x') -- doesn't match (returns 'IA?I')
SELECT REPLACE('IA?I' ,'?','x') -- works (returns 'IAxI')
Run Code Online (Sandbox Code Playgroud)
我的猜测是在第二个示例中 SQL Server 会看到 '?' 作为 2 个字符 (0x19 02) 并且不做一些破坏多字节匹配的整理优化。
应该怎么做才能使多字节示例工作?