mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-16 18:52:22 +00:00
[Bazaar] Improve Bazaar Search Performance (#4615)
* Create Alternate BazaarSearch Routine Establishes an alterative to the in memory bazaar search routine and instead uses a db query process. For large Bazaars (with 1000s of items) this is much faster. Testing with 30k items produced a search in ~1sec version 2.7sec for the in memory version. Default is false - Do not use this version. * Indexes for trader and items * Set query-based bazaar search the default * Update database_update_manifest.cpp --------- Co-authored-by: Akkadius <akkadius1@gmail.com>
This commit is contained in:
@@ -6333,6 +6333,52 @@ CREATE TABLE `character_pet_name` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
)",
|
||||
},
|
||||
ManifestEntry{
|
||||
.version = 9294,
|
||||
.description = "2025_01_26_items_table_bazaar_search_indexes.sql",
|
||||
.check = "SHOW CREATE TABLE `items`",
|
||||
.condition = "missing",
|
||||
.match = "idx_slots_reclevel",
|
||||
.sql = R"(
|
||||
-- indexes for the `items` table
|
||||
CREATE INDEX idx_slots_reclevel ON items (slots, reclevel);
|
||||
CREATE INDEX idx_itemclass_itemtype ON items (itemclass, itemtype);
|
||||
CREATE INDEX idx_augment_slots ON items (
|
||||
augslot1type,
|
||||
augslot2type,
|
||||
augslot3type,
|
||||
augslot4type,
|
||||
augslot5type,
|
||||
augslot6type
|
||||
);
|
||||
CREATE INDEX idx_races_classes ON items (races, classes);
|
||||
|
||||
-- common stat fields
|
||||
CREATE INDEX idx_item_ac ON items (ac);
|
||||
CREATE INDEX idx_item_hp ON items (hp);
|
||||
CREATE INDEX idx_item_mana ON items (mana);
|
||||
CREATE INDEX idx_item_reclevel ON items (reclevel);
|
||||
CREATE INDEX idx_item_type_skill ON items (itemtype, skillmodtype);
|
||||
)",
|
||||
.content_schema_update = true
|
||||
},
|
||||
ManifestEntry{
|
||||
.version = 9295,
|
||||
.description = "2025_01_26_trader_table_bazaar_search_indexes.sql",
|
||||
.check = "SHOW CREATE TABLE `trader`",
|
||||
.condition = "missing",
|
||||
.match = "idx_trader_item",
|
||||
.sql = R"(
|
||||
-- indexes for the `trader` table
|
||||
CREATE INDEX idx_trader_item ON trader (item_id, item_cost);
|
||||
CREATE INDEX idx_trader_char ON trader (char_id, char_zone_id, char_zone_instance_id);
|
||||
CREATE INDEX idx_trader_item_sn ON trader (item_sn);
|
||||
CREATE INDEX idx_trader_item_cost ON trader (item_cost);
|
||||
CREATE INDEX idx_trader_active_transaction ON trader (active_transaction);
|
||||
)",
|
||||
.content_schema_update = false
|
||||
},
|
||||
|
||||
// -- template; copy/paste this when you need to create a new entry
|
||||
// ManifestEntry{
|
||||
// .version = 9228,
|
||||
|
||||
Reference in New Issue
Block a user