mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-02-25 00:25:03 +08:00
Summary: - Use a sub-select query with much better performance to display the thread list - Perform analyze on tables after launch The new query is: ``` SELECT `Thread`.`data` FROM `Thread` WHERE `Thread`.`id` IN (SELECT `id` FROM `ThreadCategory` AS `M26` WHERE `M26`.`value` IN ('9m9ks71k06n5rmx82kgues09p','9s9k25q6j1krjgpkovbcjm7d','13b7ufruoymvih07ki0uahlto','dtmhlzz6phr47zp512knhjgf8','16dvjb84bszfh15kgfrjj37i3','aclwmgncdqjfibp51bvgbeik','17qad7jhbp6tozog3klm5zagt','4x4bkbawiq825u4eu3aus8tll','7axr9f5f1lzpwm2rw2ghkirhq','dsnn660af0pmou2gg3nstga8a','361qr5rva1ieby2r0ec3sn0bm','10fyvba7pjyjgeyr5i65i1zri') AND `M26`.`in_all_mail` = 1 ORDER BY `M26`.`last_message_received_timestamp` DESC LIMIT 200 OFFSET 0) ORDER BY `Thread`.`last_message_received_timestamp` DESC; ` 0|0|0|SEARCH TABLE Thread USING INDEX Thread_id (id=?) 0|0|0|EXECUTE LIST SUBQUERY 1 1|0|0|SCAN TABLE Thread-Category AS M26 USING COVERING INDEX ThreadFancyIndex 1|0|0|EXECUTE LIST SUBQUERY 2 0|0|0|USE TEMP B-TREE FOR (only on 200 result items) ``` Which is twice as performant as: ``` SELECT `Thread`.`data` FROM `Thread` INNER JOIN `ThreadCategory` AS `M26` ON `M26`.`id` = `Thread`.`id` WHERE `M26`.`value` IN ('9m9ks71k06n5rmx82kgues09p','9s9k25q6j1krjgpkovbcjm7d','13b7ufruoymvih07ki0uahlto','dtmhlzz6phr47zp512knhjgf8','16dvjb84bszfh15kgfrjj37i3','aclwmgncdqjfibp51bvgbeik','17qad7jhbp6tozog3klm5zagt','4x4bkbawiq825u4eu3aus8tll','7axr9f5f1lzpwm2rw2ghkirhq','361qr5rva1ieby2r0ec3sn0bm','10fyvba7pjyjgeyr5i65i1zri') AND `M26`.`in_all_mail` = 1 ORDER BY `M26`.`last_message_received_timestamp` DESC LIMIT 200 OFFSET 0; 0|0|1|SCAN TABLE Thread-Category AS M26 USING COVERING INDEX ThreadFancyIndex 0|0|0|EXECUTE LIST SUBQUERY 1 0|1|0|SEARCH TABLE Thread USING INDEX Thread_id (id=?) ``` Test Plan: Broken! Reviewers: evan, juan Reviewed By: juan Differential Revision: https://phab.nylas.com/D2869 |
||
---|---|---|
.. | ||
components | ||
extensions | ||
fixtures | ||
models | ||
services | ||
stores | ||
tasks | ||
action-bridge-spec.coffee | ||
auto-update-manager-spec.coffee | ||
buffered-process-spec.coffee | ||
clipboard-spec.coffee | ||
component-registry-spec.coffee | ||
database-object-registry-spec.coffee | ||
date-utils-spec.es6 | ||
dom-utils-spec.coffee | ||
extension-registry-spec.coffee | ||
jasmine-helper.coffee | ||
jasmine-jquery.js | ||
jasmine.js | ||
launch-services-spec.coffee | ||
list-selection-spec.coffee | ||
mail-rules-processor-spec.coffee | ||
mailbox-perspective-spec.es6 | ||
menu-manager-spec.coffee | ||
module-cache-spec.coffee | ||
n1-spec-reporter.coffee | ||
nylas-api-spec.coffee | ||
nylas-env-spec.coffee | ||
nylas-protocol-handler-spec.coffee | ||
nylas-test-utils.coffee | ||
package-manager-spec.coffee | ||
package-spec.coffee | ||
quoted-html-transformer-spec.coffee | ||
quoted-plain-text-transformer-spec.coffee | ||
spec-bootstrap.coffee | ||
spec-helper-platform.coffee | ||
spec-helper.coffee | ||
spec-suite.coffee | ||
spellchecker-spec.coffee | ||
style-manager-spec.coffee | ||
styles-element-spec.coffee | ||
task-factory-spec.es6 | ||
theme-manager-spec.coffee | ||
time-override.coffee | ||
time-reporter.coffee | ||
undo-manager-spec.coffee | ||
utils-spec.coffee |