aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorn0n4m3 <none@none>2010-04-14 13:02:05 +0400
committern0n4m3 <none@none>2010-04-14 13:02:05 +0400
commit8b6005666dc10ba6acb423c7ad936b8b290fd6ee (patch)
tree16ef262dbc4513f34a8cdeb2921b629a8e9f1a7a
parente3e5ca62270f010d5dbc2c160db22cbffa6dc94b (diff)
Add index for some tables in characters DB. by AlexDereka.
--HG-- branch : trunk
-rw-r--r--sql/characters.sql29
-rw-r--r--sql/updates/7905_characters_character_equipmentsets.sql1
-rw-r--r--sql/updates/7905_characters_corpse.sql2
-rw-r--r--sql/updates/7905_characters_group_member.sql1
-rw-r--r--sql/updates/7905_characters_guild.sql7
-rw-r--r--sql/updates/7905_characters_petition.sql2
-rw-r--r--src/game/GlobalEvents.cpp2
-rw-r--r--src/game/Player.cpp3
8 files changed, 36 insertions, 11 deletions
diff --git a/sql/characters.sql b/sql/characters.sql
index 4242d535997..0d5158a1f09 100644
--- a/sql/characters.sql
+++ b/sql/characters.sql
@@ -635,7 +635,8 @@ CREATE TABLE `character_equipmentsets` (
`item17` int(11) NOT NULL default '0',
`item18` int(11) NOT NULL default '0',
PRIMARY KEY (`setguid`),
- UNIQUE KEY `idx_set` (`guid`,`setguid`,`setindex`)
+ UNIQUE KEY `idx_set` (`guid`,`setguid`,`setindex`),
+ INDEX `Idx_setindex` (`setindex`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -1120,7 +1121,9 @@ CREATE TABLE `corpse` (
`instance` int(11) unsigned NOT NULL default '0',
PRIMARY KEY (`guid`),
KEY `idx_type` (`corpse_type`),
- KEY `instance` (`instance`)
+ KEY `instance` (`instance`),
+ INDEX `Idx_player`(`player`),
+ INDEX `Idx_time`(`time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Death System';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -1252,7 +1255,8 @@ CREATE TABLE `group_member` (
`memberGuid` int(11) unsigned NOT NULL,
`memberFlags` tinyint(2) unsigned NOT NULL,
`subgroup` smallint(6) unsigned NOT NULL,
- PRIMARY KEY (`leaderGuid`,`memberGuid`)
+ PRIMARY KEY (`leaderGuid`,`memberGuid`),
+ INDEX `Idx_memberGuid`(`memberGuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Groups';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -1352,7 +1356,9 @@ CREATE TABLE `guild_bank_eventlog` (
`DestTabId` tinyint(1) unsigned NOT NULL default '0' COMMENT 'Destination Tab Id',
`TimeStamp` bigint(20) unsigned NOT NULL default '0' COMMENT 'Event UNIX time',
PRIMARY KEY (`guildid`,`LogGuid`,`TabId`),
- KEY `guildid_key` (`guildid`)
+ KEY `guildid_key` (`guildid`),
+ INDEX `Idx_PlayerGuid`(`PlayerGuid`),
+ INDEX `Idx_LogGuid`(`LogGuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -1379,7 +1385,8 @@ CREATE TABLE `guild_bank_item` (
`item_guid` int(11) unsigned NOT NULL default '0',
`item_entry` int(11) unsigned NOT NULL default '0',
PRIMARY KEY (`guildid`,`tabid`,`slotid`),
- KEY `guildid_key` (`guildid`)
+ KEY `guildid_key` (`guildid`),
+ INDEX `Idx_item_guid`(`item_guid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -1461,7 +1468,10 @@ CREATE TABLE `guild_eventlog` (
`PlayerGuid2` int(11) NOT NULL COMMENT 'Player 2',
`NewRank` tinyint(2) NOT NULL COMMENT 'New rank(in case promotion/demotion)',
`TimeStamp` bigint(20) NOT NULL COMMENT 'Event UNIX time',
- PRIMARY KEY (`guildid`, `LogGuid`)
+ PRIMARY KEY (`guildid`, `LogGuid`),
+ INDEX `Idx_PlayerGuid1`(`PlayerGuid1`),
+ INDEX `Idx_PlayerGuid2`(`PlayerGuid2`),
+ INDEX `Idx_LogGuid`(`LogGuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT 'Guild Eventlog';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -1529,7 +1539,8 @@ CREATE TABLE `guild_rank` (
`rname` varchar(255) NOT NULL default '',
`rights` int(3) unsigned NOT NULL default '0',
`BankMoneyPerDay` int(11) unsigned NOT NULL default '0',
- PRIMARY KEY (`guildid`,`rid`)
+ PRIMARY KEY (`guildid`,`rid`),
+ INDEX `Idx_rid`(`rid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Guild System';
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -1830,7 +1841,9 @@ CREATE TABLE `petition_sign` (
`playerguid` int(11) unsigned NOT NULL default '0',
`player_account` int(11) unsigned NOT NULL default '0',
`type` int(10) unsigned NOT NULL default '0',
- PRIMARY KEY (`petitionguid`,`playerguid`)
+ PRIMARY KEY (`petitionguid`,`playerguid`),
+ INDEX `Idx_playerguid`(`playerguid`),
+ INDEX `Idx_ownerguid`(`ownerguid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Guild System';
/*!40101 SET character_set_client = @saved_cs_client */;
diff --git a/sql/updates/7905_characters_character_equipmentsets.sql b/sql/updates/7905_characters_character_equipmentsets.sql
new file mode 100644
index 00000000000..1617c61f1ee
--- /dev/null
+++ b/sql/updates/7905_characters_character_equipmentsets.sql
@@ -0,0 +1 @@
+ALTER TABLE `character_equipmentsets` ADD INDEX `Idx_setindex` (`setindex`);
diff --git a/sql/updates/7905_characters_corpse.sql b/sql/updates/7905_characters_corpse.sql
new file mode 100644
index 00000000000..061c90e9bfc
--- /dev/null
+++ b/sql/updates/7905_characters_corpse.sql
@@ -0,0 +1,2 @@
+ALTER TABLE `corpse` ADD INDEX `Idx_player`(`player`);
+ALTER TABLE `corpse` ADD INDEX `Idx_time`(`time`);
diff --git a/sql/updates/7905_characters_group_member.sql b/sql/updates/7905_characters_group_member.sql
new file mode 100644
index 00000000000..7c7c3eace14
--- /dev/null
+++ b/sql/updates/7905_characters_group_member.sql
@@ -0,0 +1 @@
+ALTER TABLE `group_member` ADD INDEX `Idx_memberGuid`(`memberGuid`);
diff --git a/sql/updates/7905_characters_guild.sql b/sql/updates/7905_characters_guild.sql
new file mode 100644
index 00000000000..451df6671db
--- /dev/null
+++ b/sql/updates/7905_characters_guild.sql
@@ -0,0 +1,7 @@
+ALTER TABLE `guild_eventlog` ADD INDEX `Idx_PlayerGuid1`(`PlayerGuid1`);
+ALTER TABLE `guild_eventlog` ADD INDEX `Idx_PlayerGuid2`(`PlayerGuid2`);
+ALTER TABLE `guild_eventlog` ADD INDEX `Idx_LogGuid`(`LogGuid`);
+ALTER TABLE `guild_bank_eventlog` ADD INDEX `Idx_PlayerGuid`(`PlayerGuid`);
+ALTER TABLE `guild_bank_eventlog` ADD INDEX `Idx_LogGuid`(`LogGuid`);
+ALTER TABLE `guild_bank_item` ADD INDEX `Idx_item_guid`(`item_guid`);
+ALTER TABLE `guild_rank` ADD INDEX `Idx_rid`(`rid`);
diff --git a/sql/updates/7905_characters_petition.sql b/sql/updates/7905_characters_petition.sql
new file mode 100644
index 00000000000..07132963b56
--- /dev/null
+++ b/sql/updates/7905_characters_petition.sql
@@ -0,0 +1,2 @@
+ALTER TABLE `petition_sign` ADD INDEX `Idx_playerguid`(`playerguid`);
+ALTER TABLE `petition_sign` ADD INDEX `Idx_ownerguid`(`ownerguid`); \ No newline at end of file
diff --git a/src/game/GlobalEvents.cpp b/src/game/GlobalEvents.cpp
index 9f72e96936c..300527aad73 100644
--- a/src/game/GlobalEvents.cpp
+++ b/src/game/GlobalEvents.cpp
@@ -75,7 +75,7 @@ static void CorpsesErase(bool bones,uint32 delay)
{
///- Get the list of eligible corpses/bones to be removed
//No SQL injection (uint32 and enum)
- CharacterDatabase.AsyncPQuery(&CorpsesEraseCallBack, bones, "SELECT guid,position_x,position_y,map,player FROM corpse WHERE UNIX_TIMESTAMP()-time > '%u' AND corpse_type %s '0'", delay, (bones ? "=" : "<>"));
+ CharacterDatabase.AsyncPQuery(&CorpsesEraseCallBack, bones, "SELECT guid,position_x,position_y,map,player FROM corpse WHERE time < (UNIX_TIMESTAMP()+'%u') AND corpse_type %s '0'", delay, (bones ? "=" : "<>"));
}
/// not thread guarded variant for call from other thread
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index a05356e25b1..0d70553c2c0 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -4346,8 +4346,7 @@ void Player::DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmC
"AND achievement NOT IN(1463, 3117, 3259) ", guid); // Realm First Northen Vanguard + Raid Achievements
CharacterDatabase.PExecute("DELETE FROM character_achievement_progress WHERE guid = '%u'",guid);
CharacterDatabase.PExecute("DELETE FROM character_equipmentsets WHERE guid = '%u'",guid);
- CharacterDatabase.PExecute("DELETE FROM guild_eventlog WHERE PlayerGuid1 = '%u'",guid);
- CharacterDatabase.PExecute("DELETE FROM guild_eventlog WHERE PlayerGuid2 = '%u'",guid);
+ CharacterDatabase.PExecute("DELETE FROM guild_eventlog WHERE PlayerGuid1 = '%u' OR PlayerGuid2 = '%u'",guid, guid);
CharacterDatabase.PExecute("DELETE FROM guild_bank_eventlog WHERE PlayerGuid = '%u'",guid);
CharacterDatabase.PExecute("DELETE FROM character_battleground_data WHERE guid = '%u'",guid);
CharacterDatabase.PExecute("DELETE FROM character_glyphs WHERE guid = '%u'",guid);