Some more indexes and other query improvements

This commit is contained in:
Michael 2017-01-04 19:13:50 +00:00
parent 6b6e3e264f
commit 44d966574d
3 changed files with 61 additions and 36 deletions

View file

@ -8,8 +8,9 @@ require_once("boot.php");
function dbclean_run(&$argv, &$argc) { function dbclean_run(&$argv, &$argc) {
global $a, $db; global $a, $db;
if (is_null($a)) if (is_null($a)) {
$a = new App; $a = new App;
}
if (is_null($db)) { if (is_null($db)) {
@include(".htconfig.php"); @include(".htconfig.php");
@ -21,6 +22,10 @@ function dbclean_run(&$argv, &$argc) {
load_config('config'); load_config('config');
load_config('system'); load_config('system');
if (!get_config("system", "dbclean")) {
return;
}
if ($argc == 2) { if ($argc == 2) {
$stage = intval($argv[1]); $stage = intval($argv[1]);
} else { } else {

View file

@ -538,7 +538,7 @@ function db_definition($charset) {
"site-pubkey" => array("type" => "text"), "site-pubkey" => array("type" => "text"),
"issued-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "issued-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"dfrn-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "dfrn-id" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"url" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "url" => array("type" => "varchar(255)", "not null" => "1", "default" => "", "collation" => "bin"),
"nurl" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "nurl" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"addr" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "addr" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
"alias" => array("type" => "varchar(255)", "not null" => "1", "default" => ""), "alias" => array("type" => "varchar(255)", "not null" => "1", "default" => ""),
@ -587,8 +587,8 @@ function db_definition($charset) {
"indexes" => array( "indexes" => array(
"PRIMARY" => array("id"), "PRIMARY" => array("id"),
"uid" => array("uid"), "uid" => array("uid"),
"addr_uid" => array("addr", "uid"), "addr_uid" => array("addr(32)", "uid"),
"nurl" => array("nurl"), "nurl" => array("nurl(32)"),
) )
); );
$database["conv"] = array( $database["conv"] = array(
@ -669,7 +669,7 @@ function db_definition($charset) {
), ),
"indexes" => array( "indexes" => array(
"PRIMARY" => array("id"), "PRIMARY" => array("id"),
"addr" => array("addr"), "addr" => array("addr(32)"),
) )
); );
$database["ffinder"] = array( $database["ffinder"] = array(
@ -692,7 +692,7 @@ function db_definition($charset) {
), ),
"indexes" => array( "indexes" => array(
"PRIMARY" => array("id"), "PRIMARY" => array("id"),
"server" => array("server"), "server" => array("server(32)"),
) )
); );
$database["fsuggest"] = array( $database["fsuggest"] = array(
@ -754,10 +754,10 @@ function db_definition($charset) {
), ),
"indexes" => array( "indexes" => array(
"PRIMARY" => array("id"), "PRIMARY" => array("id"),
"nurl" => array("nurl"), "nurl" => array("nurl(32)"),
"name" => array("name"), "name" => array("name(32)"),
"nick" => array("nick"), "nick" => array("nick(32)"),
"addr" => array("addr"), "addr" => array("addr(32)"),
"updated" => array("updated"), "updated" => array("updated"),
) )
); );
@ -822,7 +822,7 @@ function db_definition($charset) {
), ),
"indexes" => array( "indexes" => array(
"PRIMARY" => array("id"), "PRIMARY" => array("id"),
"nurl" => array("nurl"), "nurl" => array("nurl(32)"),
) )
); );
$database["hook"] = array( $database["hook"] = array(
@ -935,10 +935,10 @@ function db_definition($charset) {
"uid_created" => array("uid","created"), "uid_created" => array("uid","created"),
"uid_unseen_contactid" => array("uid","unseen","contact-id"), "uid_unseen_contactid" => array("uid","unseen","contact-id"),
"uid_network_received" => array("uid","network","received"), "uid_network_received" => array("uid","network","received"),
// "uid_received" => array("uid","received"), "uid_received" => array("uid","received"),
"uid_network_commented" => array("uid","network","commented"), "uid_network_commented" => array("uid","network","commented"),
// "uid_commented" => array("uid","commented"), // "uid_commented" => array("uid","commented"),
// "uid_title" => array("uid","title"), "uid_title" => array("uid","title"),
"uid_thrparent" => array("uid","thr-parent"), "uid_thrparent" => array("uid","thr-parent"),
"uid_parenturi" => array("uid","parent-uri"), "uid_parenturi" => array("uid","parent-uri"),
"uid_contactid_id" => array("uid","contact-id","id"), "uid_contactid_id" => array("uid","contact-id","id"),
@ -950,18 +950,18 @@ function db_definition($charset) {
// "uid_visible_moderated_created" => array("uid","visible","moderated","created"), // "uid_visible_moderated_created" => array("uid","visible","moderated","created"),
"uid_uri" => array("uid", "uri"), "uid_uri" => array("uid", "uri"),
"uid_wall_created" => array("uid","wall","created"), "uid_wall_created" => array("uid","wall","created"),
// "resource-id" => array("resource-id"), "resource-id" => array("resource-id"),
"uid_type" => array("uid","type"), "uid_type" => array("uid","type"),
// "uid_starred_id" => array("uid","starred", "id"), // "uid_starred_id" => array("uid","starred", "id"),
"contactid_allowcid_allowpid_denycid_denygid" => array("contact-id","allow_cid(10)","allow_gid(10)","deny_cid(10)","deny_gid(10)"), "contactid_allowcid_allowpid_denycid_denygid" => array("contact-id","allow_cid(10)","allow_gid(10)","deny_cid(10)","deny_gid(10)"),
"uid_wall_parent_created" => array("uid","wall","parent","created"), // "uid_wall_parent_created" => array("uid","wall","parent","created"),
"uid_type_changed" => array("uid","type","changed"), "uid_type_changed" => array("uid","type","changed"),
"contactid_verb" => array("contact-id","verb"), "contactid_verb" => array("contact-id","verb"),
"deleted_changed" => array("deleted","changed"), "deleted_changed" => array("deleted","changed"),
"uid_wall_changed" => array("uid","wall","changed"), "uid_wall_changed" => array("uid","wall","changed"),
"uid_eventid" => array("uid","event-id"), "uid_eventid" => array("uid","event-id"),
"uid_authorlink" => array("uid","author-link"), "uid_authorlink" => array("uid","author-link"),
// "uid_ownerlink" => array("uid","owner-link"), "uid_ownerlink" => array("uid","owner-link"),
) )
); );
$database["item_id"] = array( $database["item_id"] = array(
@ -976,7 +976,7 @@ function db_definition($charset) {
"PRIMARY" => array("id"), "PRIMARY" => array("id"),
"uid" => array("uid"), "uid" => array("uid"),
"sid" => array("sid"), "sid" => array("sid"),
"service" => array("service"), "service" => array("service(32)"),
"iid" => array("iid"), "iid" => array("iid"),
) )
); );
@ -1015,10 +1015,10 @@ function db_definition($charset) {
"PRIMARY" => array("id"), "PRIMARY" => array("id"),
"uid" => array("uid"), "uid" => array("uid"),
// "guid" => array("guid"), // "guid" => array("guid"),
// "convid" => array("convid"), "convid" => array("convid"),
// "reply" => array("reply"), // "reply" => array("reply"),
"uri" => array("uri"), "uri" => array("uri"),
"parent-uri" => array("parent-uri"), "parent-uri" => array("parent-uri(64)"),
) )
); );
$database["mailacct"] = array( $database["mailacct"] = array(
@ -1157,8 +1157,8 @@ function db_definition($charset) {
"PRIMARY" => array("id"), "PRIMARY" => array("id"),
"uid_contactid" => array("uid", "contact-id"), "uid_contactid" => array("uid", "contact-id"),
"uid_profile" => array("uid", "profile"), "uid_profile" => array("uid", "profile"),
"uid_album_created" => array("uid", "album", "created"), "uid_album_created" => array("uid", "album(32)", "created"),
"resource-id" => array("resource-id"), "resource-id" => array("resource-id(64)"),
// "guid" => array("guid"), // "guid" => array("guid"),
) )
); );
@ -1252,7 +1252,7 @@ function db_definition($charset) {
), ),
"indexes" => array( "indexes" => array(
"PRIMARY" => array("id"), "PRIMARY" => array("id"),
"hometown" => array("hometown"), // "hometown" => array("hometown(32)"),
) )
); );
$database["profile_check"] = array( $database["profile_check"] = array(
@ -1298,7 +1298,7 @@ function db_definition($charset) {
"cid" => array("cid"), "cid" => array("cid"),
"created" => array("created"), "created" => array("created"),
"last" => array("last"), "last" => array("last"),
// "network" => array("network"), "network" => array("network"),
"batch" => array("batch"), "batch" => array("batch"),
) )
); );
@ -1325,7 +1325,7 @@ function db_definition($charset) {
"indexes" => array( "indexes" => array(
"PRIMARY" => array("id"), "PRIMARY" => array("id"),
"uid" => array("uid"), "uid" => array("uid"),
"term" => array("term"), // "term" => array("term(32)"),
) )
); );
$database["session"] = array( $database["session"] = array(
@ -1337,7 +1337,7 @@ function db_definition($charset) {
), ),
"indexes" => array( "indexes" => array(
"PRIMARY" => array("id"), "PRIMARY" => array("id"),
"sid" => array("sid"), "sid" => array("sid(64)"),
"expire" => array("expire"), "expire" => array("expire"),
) )
); );
@ -1389,12 +1389,12 @@ function db_definition($charset) {
"indexes" => array( "indexes" => array(
"PRIMARY" => array("tid"), "PRIMARY" => array("tid"),
"oid_otype_type_term" => array("oid","otype","type","term"), "oid_otype_type_term" => array("oid","otype","type","term"),
"uid_term_tid" => array("uid","term","tid"), "uid_term_tid" => array("uid","term(32)","tid"),
"type_term" => array("type","term"), "type_term" => array("type","term(32)"),
"uid_otype_type_term_global_created" => array("uid","otype","type","term","global","created"), "uid_otype_type_term_global_created" => array("uid","otype","type","term(32)","global","created"),
// "otype_type_term_tid" => array("otype","type","term","tid"), // "otype_type_term_tid" => array("otype","type","term","tid"),
"uid_otype_type_url" => array("uid","otype","type","url"), "uid_otype_type_url" => array("uid","otype","type","url(64)"),
"guid" => array("guid"), "guid" => array("guid(64)"),
) )
); );
$database["thread"] = array( $database["thread"] = array(
@ -1438,7 +1438,7 @@ function db_definition($charset) {
// "uid_gcontactid_created" => array("uid","gcontact-id","created"), // "uid_gcontactid_created" => array("uid","gcontact-id","created"),
// "wall_private_received" => array("wall","private","received"), // "wall_private_received" => array("wall","private","received"),
"uid_created" => array("uid","created"), "uid_created" => array("uid","created"),
// "uid_commented" => array("uid","commented"), "uid_commented" => array("uid","commented"),
) )
); );
$database["tokens"] = array( $database["tokens"] = array(
@ -1502,7 +1502,7 @@ function db_definition($charset) {
), ),
"indexes" => array( "indexes" => array(
"PRIMARY" => array("uid"), "PRIMARY" => array("uid"),
"nickname" => array("nickname"), "nickname" => array("nickname(32)"),
) )
); );
$database["userd"] = array( $database["userd"] = array(
@ -1512,7 +1512,7 @@ function db_definition($charset) {
), ),
"indexes" => array( "indexes" => array(
"PRIMARY" => array("id"), "PRIMARY" => array("id"),
"username" => array("username"), "username" => array("username(32)"),
) )
); );
$database["workerqueue"] = array( $database["workerqueue"] = array(

View file

@ -736,13 +736,30 @@ class Diaspora {
* @return The contact id * @return The contact id
*/ */
private static function contact_by_handle($uid, $handle) { private static function contact_by_handle($uid, $handle) {
// First do a direct search on the contact table
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `addr` = '%s' LIMIT 1", $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `addr` = '%s' LIMIT 1",
intval($uid), intval($uid),
dbesc($handle) dbesc($handle)
); );
if ($r) if ($r) {
//logger("Found contact ".$r[0]['id']." for user ".$uid." and handle ".$handle." - first try", LOGGER_DEBUG);
return $r[0]; return $r[0];
} else {
// We haven't found it?
// We use another function for it that will possibly create a contact entry
$cid = get_contact($handle, $uid);
if ($cid > 0) {
$r = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1", intval($cid));
if (dbm::is_result($r)) {
logger("Found contact ".$r[0]['id']." for user ".$uid." and handle ".$handle." - second try", LOGGER_DEBUG);
return $r[0];
}
}
}
$handle_parts = explode("@", $handle); $handle_parts = explode("@", $handle);
$nurl_sql = "%%://".$handle_parts[1]."%%/profile/".$handle_parts[0]; $nurl_sql = "%%://".$handle_parts[1]."%%/profile/".$handle_parts[0];
@ -751,9 +768,12 @@ class Diaspora {
intval($uid), intval($uid),
dbesc($nurl_sql) dbesc($nurl_sql)
); );
if($r) if(dbm::is_result($r)) {
logger("Found contact ".$r[0]['id']." for user ".$uid." and handle ".$handle." - third try", LOGGER_DEBUG);
return $r[0]; return $r[0];
}
logger("Haven't found contact for user ".$uid." and handle ".$handle, LOGGER_DEBUG);
return false; return false;
} }
@ -828,7 +848,7 @@ class Diaspora {
* @return int|bool message id if the message already was stored into the system - or false. * @return int|bool message id if the message already was stored into the system - or false.
*/ */
private static function message_exists($uid, $guid) { private static function message_exists($uid, $guid) {
$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1", $r = q("SELECT `guid` FROM `item` WHERE `uid` = %d AND `guid` = '%s' LIMIT 1",
intval($uid), intval($uid),
dbesc($guid) dbesc($guid)
); );