]> git.mxchange.org Git - friendica.git/blobdiff - database.sql
Speed improvement
[friendica.git] / database.sql
index 3f15af1a44ff29082574a1dca48657a78bb5817d..3622e27930c845f70aa1ace683710fff2d409003 100644 (file)
@@ -1,6 +1,6 @@
 -- ------------------------------------------
 -- Friendica 2020.09-dev (Red Hot Poker)
--- DB_UPDATE_VERSION 1358
+-- DB_UPDATE_VERSION 1363
 -- ------------------------------------------
 
 
@@ -132,18 +132,19 @@ CREATE TABLE IF NOT EXISTS `contact` (
         PRIMARY KEY(`id`),
         INDEX `uid_name` (`uid`,`name`(190)),
         INDEX `self_uid` (`self`,`uid`),
-        INDEX `alias_uid` (`alias`(32),`uid`),
+        INDEX `alias_uid` (`alias`(96),`uid`),
         INDEX `pending_uid` (`pending`,`uid`),
         INDEX `blocked_uid` (`blocked`,`uid`),
         INDEX `uid_rel_network_poll` (`uid`,`rel`,`network`,`poll`(64),`archive`),
         INDEX `uid_network_batch` (`uid`,`network`,`batch`(64)),
-        INDEX `addr_uid` (`addr`(32),`uid`),
-        INDEX `nurl_uid` (`nurl`(32),`uid`),
+        INDEX `addr_uid` (`addr`(96),`uid`),
+        INDEX `nurl_uid` (`nurl`(96),`uid`),
         INDEX `nick_uid` (`nick`(32),`uid`),
-        INDEX `attag_uid` (`attag`(32),`uid`),
+        INDEX `attag_uid` (`attag`(96),`uid`),
         INDEX `dfrn-id` (`dfrn-id`(64)),
         INDEX `issued-id` (`issued-id`(64)),
         INDEX `network_uid_lastupdate` (`network`,`uid`,`last-update`),
+        INDEX `uid_network_self_lastupdate` (`uid`,`network`,`self`,`last-update`),
         INDEX `uid_lastitem` (`uid`,`last-item`),
         INDEX `gsid` (`gsid`),
        FOREIGN KEY (`gsid`) REFERENCES `gserver` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT
@@ -465,67 +466,6 @@ CREATE TABLE IF NOT EXISTS `fsuggest` (
         PRIMARY KEY(`id`)
 ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='friend suggestion stuff';
 
---
--- TABLE gcontact
---
-CREATE TABLE IF NOT EXISTS `gcontact` (
-       `id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
-       `name` varchar(255) NOT NULL DEFAULT '' COMMENT 'Name that this contact is known by',
-       `nick` varchar(255) NOT NULL DEFAULT '' COMMENT 'Nick- and user name of the contact',
-       `url` varchar(255) NOT NULL DEFAULT '' COMMENT 'Link to the contacts profile page',
-       `nurl` varchar(255) NOT NULL DEFAULT '' COMMENT '',
-       `photo` varchar(255) NOT NULL DEFAULT '' COMMENT 'Link to the profile photo',
-       `connect` varchar(255) NOT NULL DEFAULT '' COMMENT '',
-       `created` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
-       `updated` datetime DEFAULT '0001-01-01 00:00:00' COMMENT '',
-       `last_contact` datetime DEFAULT '0001-01-01 00:00:00' COMMENT '',
-       `last_failure` datetime DEFAULT '0001-01-01 00:00:00' COMMENT '',
-       `last_discovery` datetime DEFAULT '0001-01-01 00:00:00' COMMENT 'Date of the last contact discovery',
-       `failed` boolean COMMENT 'Connection failed',
-       `archive_date` datetime DEFAULT '0001-01-01 00:00:00' COMMENT '',
-       `archived` boolean NOT NULL DEFAULT '0' COMMENT '',
-       `location` varchar(255) NOT NULL DEFAULT '' COMMENT '',
-       `about` text COMMENT '',
-       `keywords` text COMMENT 'puplic keywords (interests)',
-       `gender` varchar(32) NOT NULL DEFAULT '' COMMENT 'Deprecated',
-       `birthday` varchar(32) NOT NULL DEFAULT '0001-01-01' COMMENT '',
-       `community` boolean NOT NULL DEFAULT '0' COMMENT '1 if contact is forum account',
-       `contact-type` tinyint NOT NULL DEFAULT -1 COMMENT '',
-       `hide` boolean NOT NULL DEFAULT '0' COMMENT '1 = should be hidden from search',
-       `nsfw` boolean NOT NULL DEFAULT '0' COMMENT '1 = contact posts nsfw content',
-       `network` char(4) NOT NULL DEFAULT '' COMMENT 'social network protocol',
-       `addr` varchar(255) NOT NULL DEFAULT '' COMMENT '',
-       `notify` varchar(255) COMMENT '',
-       `alias` varchar(255) NOT NULL DEFAULT '' COMMENT '',
-       `generation` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '',
-       `server_url` varchar(255) NOT NULL DEFAULT '' COMMENT 'baseurl of the contacts server',
-       `gsid` int unsigned COMMENT 'Global Server ID',
-        PRIMARY KEY(`id`),
-        UNIQUE INDEX `nurl` (`nurl`(190)),
-        INDEX `name` (`name`(64)),
-        INDEX `nick` (`nick`(32)),
-        INDEX `addr` (`addr`(64)),
-        INDEX `hide_network_updated` (`hide`,`network`,`updated`),
-        INDEX `updated` (`updated`),
-        INDEX `gsid` (`gsid`),
-       FOREIGN KEY (`gsid`) REFERENCES `gserver` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT
-) DEFAULT COLLATE utf8mb4_general_ci COMMENT='global contacts';
-
---
--- TABLE glink
---
-CREATE TABLE IF NOT EXISTS `glink` (
-       `id` int unsigned NOT NULL auto_increment COMMENT 'sequential ID',
-       `cid` int unsigned NOT NULL DEFAULT 0 COMMENT '',
-       `uid` mediumint unsigned NOT NULL DEFAULT 0 COMMENT 'User id',
-       `gcid` int unsigned NOT NULL DEFAULT 0 COMMENT '',
-       `zcid` int unsigned NOT NULL DEFAULT 0 COMMENT '',
-       `updated` datetime NOT NULL DEFAULT '0001-01-01 00:00:00' COMMENT '',
-        PRIMARY KEY(`id`),
-        UNIQUE INDEX `cid_uid_gcid_zcid` (`cid`,`uid`,`gcid`,`zcid`),
-        INDEX `gcid` (`gcid`)
-) DEFAULT COLLATE utf8mb4_general_ci COMMENT='\'friends of friends\' linkages derived from poco';
-
 --
 -- TABLE group
 --
@@ -705,6 +645,7 @@ CREATE TABLE IF NOT EXISTS `item` (
         INDEX `resource-id` (`resource-id`),
         INDEX `deleted_changed` (`deleted`,`changed`),
         INDEX `uid_wall_changed` (`uid`,`wall`,`changed`),
+        INDEX `uid_unseen_wall` (`uid`,`unseen`,`wall`),
         INDEX `mention_uid_id` (`mention`,`uid`,`id`),
         INDEX `uid_eventid` (`uid`,`event-id`),
         INDEX `icid` (`icid`),
@@ -981,7 +922,8 @@ CREATE TABLE IF NOT EXISTS `photo` (
         INDEX `uid_profile` (`uid`,`profile`),
         INDEX `uid_album_scale_created` (`uid`,`album`(32),`scale`,`created`),
         INDEX `uid_album_resource-id_created` (`uid`,`album`(32),`resource-id`,`created`),
-        INDEX `resource-id` (`resource-id`)
+        INDEX `resource-id` (`resource-id`),
+       FOREIGN KEY (`contact-id`) REFERENCES `contact` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT
 ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='photo storage';
 
 --
@@ -1411,6 +1353,7 @@ CREATE TABLE IF NOT EXISTS `workerqueue` (
         INDEX `done_priority_created` (`done`,`priority`,`created`),
         INDEX `done_priority_next_try` (`done`,`priority`,`next_try`),
         INDEX `done_pid_next_try` (`done`,`pid`,`next_try`),
+        INDEX `done_pid_retrial` (`done`,`pid`,`retrial`),
         INDEX `done_pid_priority_created` (`done`,`pid`,`priority`,`created`)
 ) DEFAULT COLLATE utf8mb4_general_ci COMMENT='Background tasks queue entries';
 
@@ -1449,6 +1392,65 @@ CREATE VIEW `tag-view` AS SELECT
                        LEFT JOIN `tag` ON `post-tag`.`tid` = `tag`.`id`
                        LEFT JOIN `contact` ON `post-tag`.`cid` = `contact`.`id`;
 
+--
+-- VIEW network-item-view
+--
+DROP VIEW IF EXISTS `network-item-view`;
+CREATE VIEW `network-item-view` AS SELECT 
+       `item`.`parent-uri-id` AS `uri-id`,
+       `item`.`parent-uri` AS `uri`,
+       `item`.`parent` AS `parent`,
+       `item`.`received` AS `received`,
+       `item`.`commented` AS `commented`,
+       `item`.`created` AS `created`,
+       `item`.`uid` AS `uid`,
+       `item`.`starred` AS `starred`,
+       `item`.`mention` AS `mention`,
+       `item`.`network` AS `network`,
+       `item`.`unseen` AS `unseen`,
+       `item`.`gravity` AS `gravity`,
+       `item`.`contact-id` AS `contact-id`
+       FROM `item`
+                       INNER JOIN `thread` ON `thread`.`iid` = `item`.`parent`
+                       STRAIGHT_JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
+                       LEFT JOIN `user-item` ON `user-item`.`iid` = `item`.`id` AND `user-item`.`uid` = `thread`.`uid`
+                       LEFT JOIN `user-contact` AS `author` ON `author`.`uid` = `thread`.`uid` AND `author`.`cid` = `thread`.`author-id`
+                       LEFT JOIN `user-contact` AS `owner` ON `owner`.`uid` = `thread`.`uid` AND `owner`.`cid` = `thread`.`owner-id`
+                       WHERE `thread`.`visible` AND NOT `thread`.`deleted` AND NOT `thread`.`moderated`
+                       AND (NOT `contact`.`readonly` AND NOT `contact`.`blocked` AND NOT `contact`.`pending`)
+                       AND (`user-item`.`hidden` IS NULL OR NOT `user-item`.`hidden`)
+                       AND (`author`.`blocked` IS NULL OR NOT `author`.`blocked`)
+                       AND (`owner`.`blocked` IS NULL OR NOT `owner`.`blocked`);
+
+--
+-- VIEW network-thread-view
+--
+DROP VIEW IF EXISTS `network-thread-view`;
+CREATE VIEW `network-thread-view` AS SELECT 
+       `item`.`uri-id` AS `uri-id`,
+       `item`.`uri` AS `uri`,
+       `item`.`parent-uri-id` AS `parent-uri-id`,
+       `thread`.`iid` AS `parent`,
+       `thread`.`received` AS `received`,
+       `thread`.`commented` AS `commented`,
+       `thread`.`created` AS `created`,
+       `thread`.`uid` AS `uid`,
+       `thread`.`starred` AS `starred`,
+       `thread`.`mention` AS `mention`,
+       `thread`.`network` AS `network`,
+       `thread`.`contact-id` AS `contact-id`
+       FROM `thread`
+                       STRAIGHT_JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
+                       STRAIGHT_JOIN `item` ON `item`.`id` = `thread`.`iid`
+                       LEFT JOIN `user-item` ON `user-item`.`iid` = `item`.`id` AND `user-item`.`uid` = `thread`.`uid`
+                       LEFT JOIN `user-contact` AS `author` ON `author`.`uid` = `thread`.`uid` AND `author`.`cid` = `thread`.`author-id`
+                       LEFT JOIN `user-contact` AS `owner` ON `owner`.`uid` = `thread`.`uid` AND `owner`.`cid` = `thread`.`owner-id`
+                       WHERE `thread`.`visible` AND NOT `thread`.`deleted` AND NOT `thread`.`moderated`
+                       AND (NOT `contact`.`readonly` AND NOT `contact`.`blocked` AND NOT `contact`.`pending`)
+                       AND (`user-item`.`hidden` IS NULL OR NOT `user-item`.`hidden`)
+                       AND (`author`.`blocked` IS NULL OR NOT `author`.`blocked`)
+                       AND (`owner`.`blocked` IS NULL OR NOT `owner`.`blocked`);
+
 --
 -- VIEW owner-view
 --
@@ -1517,7 +1519,6 @@ CREATE VIEW `owner-view` AS SELECT
        `contact`.`archive` AS `archive`,
        `contact`.`pending` AS `pending`,
        `contact`.`deleted` AS `deleted`,
-       `contact`.`rating` AS `rating`,
        `contact`.`unsearchable` AS `unsearchable`,
        `contact`.`sensitive` AS `sensitive`,
        `contact`.`baseurl` AS `baseurl`,