Guest User

Untitled

a guest
Jul 15th, 2018
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.46 KB | None | 0 0
  1. CREATE TABLE `chains` (
  2. `chain_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  3. ...
  4. PRIMARY KEY (`chain_id`),
  5. ...
  6. ) ENGINE=InnoDB
  7.  
  8. CREATE TABLE `docs` (
  9. `doc_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  10. `chain_id` int(10) unsigned NOT NULL,
  11. `id_status` tinyint(3) unsigned NOT NULL COMMENT 'open,sent,inbox,read,etc',
  12. `date_created` int(10) unsigned NOT NULL DEFAULT '0',
  13. ...
  14. PRIMARY KEY (`doc_id`),
  15. KEY `id_status` (`id_status`),
  16. KEY `family` (`family`),
  17. KEY `chain_id` (`chain_id`),
  18. KEY `date_created` (`date_created`),
  19. ) ENGINE=InnoDB
  20.  
  21. SELECT `chains`.`chain_id`
  22. FROM `chains`
  23. JOIN `docs` USING (`chain_id`)
  24. WHERE `docs`.`family`=1
  25. AND `docs`.`id_status` IN (4,5)
  26. AND `chains`.`is_archive`=0
  27. GROUP BY `chain_id`
  28. ORDER BY `date_created` DESC
  29. LIMIT 0,200
  30.  
  31. +----+-------------+--------+------+---------------------------------+------------+---------+--------------------------+---------+----------------------------------------------+
  32. | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
  33. +----+-------------+--------+------+---------------------------------+------------+---------+--------------------------+---------+----------------------------------------------+
  34. | 1 | SIMPLE | chains | ref | PRIMARY,is_archive | is_archive | 1 | const | 2789080 | Using index; Using temporary; Using filesort |
  35. | 1 | SIMPLE | docs | ref | id_status,family,chain_id,test2 | chain_id | 4 | for_test.chains.chain_id | 1 | Using where |
  36. +----+-------------+--------+------+---------------------------------+------------+---------+--------------------------+---------+----------------------------------------------+
  37.  
  38. SELECT d.chain_id
  39. FROM docs AS d
  40. WHERE d.family = 1
  41. AND d.id_status IN (4,5)
  42. AND EXISTS
  43. ( SELECT *
  44. FROM chains AS c
  45. WHERE c.is_archive = 0
  46. AND c.chain_id = d.chain_id
  47. )
  48. GROUP BY d.chain_id
  49. ORDER BY MAX(d.date_created) DESC
  50. LIMIT 200 OFFSET 0 ;
  51.  
  52. SELECT d.chain_id
  53. FROM docs AS d
  54. JOIN ( SELECT c.chain_id
  55. FROM chains AS c
  56. WHERE c.is_archive = 0
  57. ) AS c
  58. ON c.chain_id = d.chain_id
  59. WHERE d.family = 1
  60. AND d.id_status IN (4,5)
  61. GROUP BY d.chain_id
  62. ORDER BY MAX(d.date_created) DESC
  63. LIMIT 200 OFFSET 0 ;
  64.  
  65. docs
  66. (id_status, family, chain_id, date_created)
  67.  
  68. chains
  69. (id_archive, chain_id)
Add Comment
Please, Sign In to add comment