Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Database] Add indexes for improved performance #446

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion apps/data/database/initdb.sql
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ CREATE TABLE users (
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
modified_at TIMESTAMP NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_users_email ON users(email);

CREATE TRIGGER users_modified_at BEFORE UPDATE ON users
FOR EACH ROW EXECUTE PROCEDURE trigger_update_modified();
Expand All @@ -40,6 +41,9 @@ CREATE TABLE listings (
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
modified_at TIMESTAMP NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_listings_seller_id ON listings(seller_id);
CREATE INDEX idx_listings_buyer_id ON listings(buyer_id);
CREATE INDEX idx_listings_status ON listings(status);

CREATE TRIGGER listings_modified_at BEFORE UPDATE ON listings
FOR EACH ROW EXECUTE PROCEDURE trigger_update_modified();
Expand All @@ -52,6 +56,9 @@ CREATE TABLE messages (
message_body TEXT NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_messages_sender_id ON messages(sender_id);
CREATE INDEX idx_messages_receiver_id ON messages(receiver_id);
CREATE INDEX idx_messages_listing_id ON messages(listing_id);

CREATE TABLE reviews (
review_id SERIAL PRIMARY KEY,
Expand All @@ -62,6 +69,8 @@ CREATE TABLE reviews (
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
modified_at TIMESTAMP NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_reviews_listing_id ON reviews(listing_id);
CREATE INDEX idx_reviews_user_id ON reviews(user_id);

CREATE TRIGGER reviews_modified_at BEFORE UPDATE ON reviews
FOR EACH ROW EXECUTE PROCEDURE trigger_update_modified();
Expand All @@ -74,6 +83,7 @@ CREATE TABLE user_preferences (
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
modified_at TIMESTAMP NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_user_preferences_user_id ON user_preferences(user_id);

CREATE TRIGGER user_preferences_modified_at BEFORE UPDATE ON user_preferences
FOR EACH ROW EXECUTE PROCEDURE trigger_update_modified();
Expand All @@ -84,10 +94,12 @@ CREATE TABLE user_searches (
search_term VARCHAR NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_user_searches_user_id ON user_searches(user_id);

CREATE TABLE user_clicks (
click_id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users(user_id) ON DELETE CASCADE,
listing_id INTEGER NOT NULL REFERENCES listings(listing_id),
created_at TIMESTAMP NOT NULL DEFAULT NOW()
);
);
CREATE INDEX idx_users_clicks_user_id ON user_clicks(user_id);