我有以下查询:
uno = db.prueba.aggregate(
{$project: {a_gt_b: {$cmp: ['$num-a','$num-b']}}},
{$match: {a_gt_b:{$gt:0}}},
{$group:{"_id":"$a_gt_b",total:{"$sum":1}}},
{$project: {"_id":0,"total":1}}
);
Run Code Online (Sandbox Code Playgroud)
我想执行$ explain命令,根据这个答案, 我必须采取$ match部分,但我不知道如何.
查询如下,
select *
from lab this_
inner join visits v1_ on this_.visit_id=v1_.id
Run Code Online (Sandbox Code Playgroud)
v1_.id 是查询中的主键。
完成需要1分多钟。
下面是计划。
id select_type table type possible_keys key
1 SIMPLE v1_ ALL <null> <null>
1 SIMPLE this_ ALL <null> <null>
Run Code Online (Sandbox Code Playgroud)
不知道为什么主键被选为键。类型也是 ALL。
-- 2 Moderators: please do not re-format my code
DROP TABLE IF EXISTS `t`;
CREATE TABLE `t` (
`v` VARCHAR(3) NOT NULL COLLATE 'latin1_general_ci'
, `c` CHAR(3) NOT NULL COLLATE 'latin1_general_ci'
, INDEX `IX_t_v` (`v`)
, INDEX `IX_t_c` (`c`)
)
;
INSERT INTO t
(v, c)
VALUES
('001', '001')
, ('002', '002')
, ('003', '003')
, ('004', '004')
;
EXPLAIN SELECT c FROM t WHERE c = '001';
EXPLAIN SELECT v FROM t WHERE v = '001';
Run Code Online (Sandbox Code Playgroud)
解释命令给了我:
id select_type …Run Code Online (Sandbox Code Playgroud) 现在我的MYSQL查询如下.
但在700个项目中,50个参数和12000个项目参数.外键创建,但创建索引 - 我不知道:(查询需要45秒以上.它太大了,因为我在一些论坛上阅读,即使我想每隔5分钟在CRON中进行一次.
如何优化该查询?以及我想创建哪些索引?以及如何理解这个过程?谢谢.
SELECT
`tt1`.`id` `projects_id`,
`tt2`.`projectparams_id`,
`tt2`.`defaultvalue`,
`tt2`.`defaultvaluealias`,
`tt2`.`globalvalue`,
`tt2`.`globalvaluealias`,
`tt2`.`value`,
`tt2`.`valuealias`
FROM
`projects` `tt1`
LEFT JOIN
(
SELECT
`t1`.`id` `projectparams_id`,
`t1`.`defaultvalue`,
`t1`.`defaultvaluealias`,
`t1`.`globalvalue`,
`t1`.`globalvaluealias`,
`t2`.`value`,
`t2`.`valuealias`,
`t2`.`projects_id`
FROM
`projectparams` `t1`
LEFT JOIN `projects_projectparams` `t2` ON `t2`.`projectparams_id` = `t1`.`id`
) tt2 ON `tt1`.`id` = `tt2`.`projects_id`
Run Code Online (Sandbox Code Playgroud) _='_=%r;print (_%%_) ';print (_%_)
Run Code Online (Sandbox Code Playgroud)
(编辑:我已收到您的输入并修复了代码,感谢您的更正。)
这是您可以用 Python 编写的最短的 quine(有人告诉我)。一个返回自身的代码。
有人可以像我对 Python 一无所知一样向我解释这行代码吗?顺便说一下,我使用 Python 3.x。
我正在寻找的是对正在发生的事情的逐字解释。
谢谢。
这是query:
EXPLAIN (analyze, BUFFERS, SETTINGS)
SELECT
operation.id
FROM
operation
RIGHT JOIN(
SELECT uid, did FROM (
SELECT uid, did FROM operation where id = 993754
) t
) parts ON (operation.uid = parts.uid AND operation.did = parts.did)
Run Code Online (Sandbox Code Playgroud)
和EXPLAIN信息:
Nested Loop Left Join (cost=0.85..29695.77 rows=100 width=8) (actual time=13.709..13.711 rows=1 loops=1)
Buffers: shared hit=4905
-> Unique (cost=0.42..8.45 rows=1 width=16) (actual time=0.011..0.013 rows=1 loops=1)
Buffers: shared hit=5
-> Index Only Scan using oi on operation operation_1 (cost=0.42..8.44 rows=1 width=16) …Run Code Online (Sandbox Code Playgroud) explain ×6
mysql ×3
database ×1
mongodb ×1
nosql ×1
optimization ×1
performance ×1
postgresql ×1
python ×1
quine ×1
sql ×1
varchar ×1