在最新版本的 PostgreSQL 中(截至 2013 年 12 月),我们能否在两个或多个内核之间共享查询以提高性能?还是我们应该获得更快的内核?
我有一个名为 ips 的表,如下所示:
CREATE TABLE `ips` (
`id` int(10) unsigned NOT NULL DEFAULT '0',
`begin_ip_num` int(11) unsigned DEFAULT NULL,
`end_ip_num` int(11) unsigned DEFAULT NULL,
`iso` varchar(3) DEFAULT NULL,
`country` varchar(150) DEFAULT NULL
) ENGINE=InnoDB
Run Code Online (Sandbox Code Playgroud)
假设我countryid
在国家/地区表中的此表上有一个字段,如下所示:
CREATE TABLE `country` (
`countryid` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`ordering` smallint(5) unsigned NOT NULL DEFAULT '0',
`iso` char(2) NOT NULL,
PRIMARY KEY (`countryid`)
) ENGINE=InnoDB
Run Code Online (Sandbox Code Playgroud)
ips 表中大约有 100,000 条记录。是否有以下情况的查询:
检查是否ips.iso
等于country.iso …
我在表中有一个像 fr(fromid,toid) 这样的唯一复合键,当我使用解释运行查询时,我得到以下结果:
Impossible WHERE noticed after reading const tables`
Run Code Online (Sandbox Code Playgroud)
我运行的查询:
explain SELECT rid FROM relationship WHERE fromid=78 AND toid=60
Run Code Online (Sandbox Code Playgroud)
有什么帮助吗?
EDIT1:
当我使用以下查询时:
explain SELECT rid FROM relationship WHERE fromid=60 and toid=78 AND is_approved='s' OR is_approved='f' OR is_approved='t'
Run Code Online (Sandbox Code Playgroud)
我看到的USING WHERE
不是之前的消息,但是当我使用以下查询时:
explain SELECT rid FROM relationship WHERE fromid=60 and toid=78 AND (is_approved='s' OR is_approved='f' OR is_approved='t')
Run Code Online (Sandbox Code Playgroud)
我再次收到第一条impossible ...
消息!这些括号在这里做什么?
编辑2:
CREATE TABLE `relationship` (
`rid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`fromid` mediumint(8) unsigned NOT NULL,
`toid` mediumint(8) unsigned …
Run Code Online (Sandbox Code Playgroud) 我有下表。
create table test (
id smallint unsigned AUTO_INCREMENT,
age tinyint not null,
primary key(id),
check (age<20)
);
Run Code Online (Sandbox Code Playgroud)
问题是CHECK
约束不适用于年龄列。例如,当我为年龄字段插入 222 时,MySQL 接受它。
我读过一篇文章,提到我们可以通过使用该语句实现每秒 60,000 次插入,该LOAD DATA IN FILE
语句从 csv 文件中读取并将数据插入到数据库中。
为什么它应该与普通刀片不同?
编辑:
我通过只调用一个INSERT
语句来减少往返:
INSERT INTO tblname
VALUES (NULL,2,'some text here0'),(NULL,2,'some text here1')
,(NULL,2,'some text here2'),(NULL,2,'some text here3')
.....,(NULL,2,'some text here3000');
Run Code Online (Sandbox Code Playgroud)
那这个呢?
从MongoDB
文档中提到:
当您只需要文档中的一部分字段时,您可以通过只返回您需要的字段来获得更好的性能
过滤字段如何影响性能?性能是否与通过网络传输的数据大小有关?或将保存在内存中的数据大小?这种性能究竟是如何提高的?文档中提到的这种性能是什么?
我的 MongoDB 查询速度很慢。返回子集是否会影响我的慢查询(我在该字段上有复合索引)?
假设我的站点中有一个用户表,其中表中有大约 2-3 百万个用户(记录)。
为了加快我的登录过程,拆分我的用户表是否是一种好方法,一个用于他们的信息,另一个用于他们的登录。
如果我们可以从一张表中运行类似于下面的查询:
select username,password from users where username=`test` AND password=****
Run Code Online (Sandbox Code Playgroud)
是否有必要拆分它,这是否会加快我网站的登录过程?
我很好奇有没有办法在共享主机中找到 my.cnf 或者这个文件只能由 DBA 配置而没有人可以设置他/她自己的设置?
我有两个疑问:
第一个如下:
SELECT *
FROM batch bp
INNER JOIN sender_log sl ON sl.id=bp.log_id
AND bp.protocol='someprotocol'
Run Code Online (Sandbox Code Playgroud)
第二个查询用于删除行:
delete from batch where protocol='someprotocol'
Run Code Online (Sandbox Code Playgroud)
我知道在 postgres 中我们有RETURNING *来返回已删除的行。我想要实现的是删除行并在一个查询中返回它们。我怎样才能做到这一点?
mysql ×7
mysql-5 ×2
postgresql ×2
bulk ×1
constraint ×1
delete ×1
explain ×1
import ×1
join ×1
license ×1
mongodb ×1
parallelism ×1
performance ×1
projection ×1
select ×1
update ×1