boinc/db/constraints.sql

201 lines
5.3 KiB
SQL

alter table platform
add unique(name);
alter table app
add unique(name);
alter table app_version
add unique apvp (appid, platformid, version_num, plan_class);
alter table user
add unique(email_addr),
add unique(authenticator),
add index ind_tid (teamid),
add unique(name),
add index user_tot (total_credit desc),
-- db_dump.C
add index user_avg (expavg_credit desc),
-- db_dump.C
add index user_email_time (email_addr_change_time);
alter table team
add unique(name),
add fulltext index team_name_desc(name, description),
add index team_avg (expavg_credit desc),
-- db_dump.C
add index team_tot (total_credit desc),
-- db_dump.C
add index team_userid (userid);
alter table workunit
add unique(name),
-- not currently used but good invariant
add index wu_val (appid, need_validate),
-- validator
add index wu_timeout (transition_time),
-- transitioner
add index wu_filedel (file_delete_state),
-- file_deleter, db_purge
add index wu_assim (appid, assimilate_state);
-- assimilator
alter table result
add unique(name),
-- the scheduler looks up results by name
add index res_wuid (workunitid),
-- transitioner
-- NOTE res_wu_user may suffice, could try dropping this one
add index ind_res_st (server_state, priority),
-- feeder
add index res_app_state(appid, server_state),
-- to get count of unsent results for given app (e.g. in work generator)
add index res_filedel (file_delete_state),
-- file_deleter
add index res_userid_id(userid, id desc),
-- html_user/results.php
add index res_userid_val(userid, validate_state),
-- to show pending credit
add index res_hostid_id (hostid, id desc),
-- html_user/results.php
add index res_wu_user (workunitid, userid);
-- scheduler (avoid sending mult results of same WU to one user)
alter table msg_from_host
add index message_handled (handled),
-- for message handler
add index message_hostid(hostid);
-- for delete account
alter table msg_to_host
add index msg_to_host(hostid, handled);
-- for scheduler
alter table host
add index host_userid_cpid (userid, host_cpid),
-- html_user/host_user.php
-- sched/handle_request.cpp for user with many hosts
add index host_domain_name (domain_name),
-- sched/handle_request.cpp for user with many hosts
add index host_avg (expavg_credit desc),
-- db_dump.C
add index host_tot (total_credit desc);
-- db_dump.C
alter table profile
add fulltext index profile_reponse(response1, response2),
add index pro_uotd (uotd_time desc),
add unique profile_userid(userid);
alter table subscriptions
add unique sub_unique(userid, threadid);
alter table category
add unique cat1(name, is_helpdesk);
alter table forum
add unique pct (parent_type, category, title);
alter table thread
add fulltext index thread_title(title);
alter table post
add index post_user (user),
add index post_thread (thread),
add fulltext index post_content(content);
alter table credited_job
add index credited_job_user (userid),
add index credited_job_wu (workunitid),
add unique credited_job_user_wu (userid, workunitid);
alter table team_delta
add index team_delta_teamid (teamid, timestamp),
add index team_delta_userid (userid);
-- for delete account
alter table team_admin
add unique (teamid, userid);
alter table friend
add unique friend_u (user_src, user_dest);
alter table notify
add unique notify_un (userid, type, opaque);
alter table host_app_version
add unique hap(host_id, app_version_id);
alter table assignment
add index asgn_target(target_type, target_id);
alter table job_file
add unique jf_name(name);
alter table badge_user
add unique (user_id, badge_id);
alter table badge_team
add unique (team_id, badge_id);
alter table credit_user
add index cu_total(appid, total),
add index cu_avg(appid, expavg);
alter table credit_team
add index ct_total(appid, total),
add index ct_avg(appid, expavg);
alter table token
add index token_userid(userid);
alter table user_deleted
add index user_deleted_create(create_time);
-- for delete account
alter table host_deleted
add index host_deleted_create(create_time);
-- for delete account
alter table donation_paypal
-- for delete account
add index donation_paypal_userid(userid);
alter table banishment_vote
add index banishment_vote_userid(userid);
-- for delete account
alter table post_ratings
add index post_ratings_user(user);
-- for delete account
alter table sent_email
add index sent_email_userid(userid);
-- for delete account
alter table private_messages
add index userid(userid);
alter table consent
add index userid_ctid_timestamp(userid, consent_type_id, consent_time),
add index consent_timestamp(consent_time),
add index flag_ctid(consent_flag, consent_type_id);
alter table consent
add foreign key(consent_type_id)
references consent_type(id)
on update cascade
on delete restrict;
-- explicit delete restrict on this foreign key
alter table consent_type
add index consent_name(shortname);