Skip to content

Commit 917bbef

Browse files
committed
feat: 인덱스 최적화
1 parent 8c87515 commit 917bbef

File tree

9 files changed

+33
-48
lines changed

9 files changed

+33
-48
lines changed

Tradin-Core/src/main/java/com/tradin/core/account/domain/Account.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import jakarta.persistence.JoinColumn;
1414
import jakarta.persistence.ManyToOne;
1515
import jakarta.persistence.Table;
16+
import jakarta.persistence.Index;
1617
import java.time.LocalDateTime;
1718
import lombok.AccessLevel;
1819
import lombok.Builder;
@@ -24,9 +25,7 @@
2425
@Entity
2526
@NoArgsConstructor(access = AccessLevel.PROTECTED)
2627
@Table(indexes = {
27-
@Index(name = "idx_account_user_id", columnList = "user_id"),
28-
@Index(name = "idx_account_is_deleted", columnList = "is_deleted"),
29-
@Index(name = "idx_account_user_deleted", columnList = "user_id, is_deleted")
28+
@Index(name = "ix_account_user_is_deleted", columnList = "user_id, is_deleted")
3029
})
3130
public class Account extends AuditTime {
3231

Tradin-Core/src/main/java/com/tradin/core/balance/domain/Balance.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import jakarta.persistence.JoinColumn;
2424
import jakarta.persistence.ManyToOne;
2525
import jakarta.persistence.Table;
26+
import jakarta.persistence.Index;
27+
import jakarta.persistence.UniqueConstraint;
2628
import lombok.AccessLevel;
2729
import lombok.Builder;
2830
import lombok.Getter;
@@ -31,11 +33,10 @@
3133
@Entity
3234
@Getter
3335
@NoArgsConstructor(access = AccessLevel.PROTECTED)
34-
@Table(name = "balance", indexes = {
35-
@Index(name = "idx_balance_account_id", columnList = "account_id"),
36-
@Index(name = "idx_balance_coin_type", columnList = "coin_type"),
37-
@Index(name = "idx_balance_account_coin", columnList = "account_id, coin_type")
38-
})
36+
@Table(
37+
uniqueConstraints = {
38+
@UniqueConstraint(name = "uk_balance_account_coin_type", columnNames = {"account_id", "coin_type"})
39+
})
3940
public class Balance extends AuditTime {
4041

4142
@Id

Tradin-Core/src/main/java/com/tradin/core/futuresOrder/domain/FuturesOrder.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import jakarta.persistence.ManyToOne;
2525
import jakarta.persistence.Table;
2626
import jakarta.persistence.Index;
27+
import jakarta.persistence.Index;
2728
import java.math.BigDecimal;
2829
import java.math.RoundingMode;
2930
import lombok.AccessLevel;
@@ -35,11 +36,7 @@
3536
@Entity
3637
@NoArgsConstructor(access = AccessLevel.PROTECTED)
3738
@Table(indexes = {
38-
@Index(name = "idx_futures_order_account_id", columnList = "account_id"),
39-
@Index(name = "idx_futures_order_strategy_id", columnList = "strategy_id"),
40-
@Index(name = "idx_futures_order_status", columnList = "order_status"),
41-
@Index(name = "idx_futures_order_created_at", columnList = "created_at"),
42-
@Index(name = "idx_futures_order_account_strategy", columnList = "account_id, strategy_id")
39+
@Index(name = "ix_futures_order_account_strategy", columnList = "account_id, strategy_id")
4340
})
4441
public class FuturesOrder extends AuditTime {
4542

Tradin-Core/src/main/java/com/tradin/core/futuresPosition/domain/FuturesPosition.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import jakarta.persistence.JoinColumn;
2525
import jakarta.persistence.ManyToOne;
2626
import jakarta.persistence.Table;
27+
import jakarta.persistence.Index;
2728
import jakarta.persistence.UniqueConstraint;
2829
import java.math.BigDecimal;
2930
import java.math.RoundingMode;
@@ -37,10 +38,11 @@
3738
@Getter
3839
@NoArgsConstructor(access = AccessLevel.PROTECTED)
3940
@Table(
40-
uniqueConstraints = @UniqueConstraint(columnNames = {"account_id", "coinType"}),
41+
uniqueConstraints = {
42+
@UniqueConstraint(name = "uk_futures_position_account_coin_type", columnNames = {"account_id", "coin_type"})
43+
},
4144
indexes = {
42-
@Index(name = "idx_futures_position_account_coin", columnList = "account_id, coinType"),
43-
@Index(name = "idx_futures_position_created_at", columnList = "created_at")
45+
@Index(name = "ix_futures_position_coin_type_liquidation_price", columnList = "coin_type, liquidation_price")
4446
}
4547
)
4648
public class FuturesPosition extends AuditTime {

Tradin-Core/src/main/java/com/tradin/core/history/domain/History.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,18 @@
2121
import jakarta.persistence.JoinColumn;
2222
import jakarta.persistence.ManyToOne;
2323
import jakarta.persistence.Table;
24+
import jakarta.persistence.Index;
2425
import lombok.AccessLevel;
2526
import lombok.Builder;
2627
import lombok.Getter;
2728
import lombok.NoArgsConstructor;
2829

2930
@Entity
3031
@Getter
32+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
3133
@Table(indexes = {
32-
@Index(name = "idx_history_strategy_id", columnList = "strategy_id"),
33-
@Index(name = "idx_history_created_at", columnList = "created_at"),
34-
@Index(name = "idx_history_strategy_created", columnList = "strategy_id, created_at")
34+
@Index(name = "idx_history_strategy_exit", columnList = "strategy_id, exit_time DESC")
3535
})
36-
@NoArgsConstructor(access = AccessLevel.PROTECTED)
3736
public class History extends AuditTime {
3837

3938
@Id

Tradin-Core/src/main/java/com/tradin/core/outbox/domain/OutboxMessage.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import jakarta.persistence.Id;
1212
import jakarta.persistence.Table;
1313
import jakarta.persistence.Index;
14+
import jakarta.persistence.Index;
1415
import lombok.AccessLevel;
1516
import lombok.Builder;
1617
import lombok.Getter;
@@ -20,13 +21,9 @@
2021
@Entity
2122
@Getter
2223
@NoArgsConstructor(access = AccessLevel.PROTECTED)
23-
@Table(name = "outbox_message", indexes = {
24-
@Index(name = "idx_outbox_message_type", columnList = "message_type"),
25-
@Index(name = "idx_outbox_message_id", columnList = "message_id"),
26-
@Index(name = "idx_outbox_status", columnList = "status"),
27-
@Index(name = "idx_outbox_type_status", columnList = "message_type, status"),
28-
@Index(name = "idx_outbox_created_at", columnList = "created_at"),
29-
@Index(name = "idx_outbox_updated_at", columnList = "updated_at")
24+
@Table(indexes = {
25+
@Index(name = "idx_outbox_message_type_status", columnList = "message_type, status"),
26+
@Index(name = "idx_outbox_message_id", columnList = "message_id")
3027
})
3128
public class OutboxMessage extends AuditTime {
3229

Tradin-Core/src/main/java/com/tradin/core/strategy/domain/Strategy.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,6 @@
2424
@Getter
2525
@Entity
2626
@NoArgsConstructor(access = AccessLevel.PROTECTED)
27-
@Table(indexes = {
28-
@Index(name = "idx_strategy_name", columnList = "name"),
29-
@Index(name = "idx_strategy_type_strategy", columnList = "strategy_type"),
30-
@Index(name = "idx_strategy_type_coin", columnList = "coin_type"),
31-
@Index(name = "idx_strategy_type_timeframe", columnList = "time_frame_type"),
32-
@Index(name = "idx_strategy_profit_factor", columnList = "profit_factor"),
33-
@Index(name = "idx_strategy_created_at", columnList = "created_at")
34-
})
3527
public class Strategy extends AuditTime {
3628

3729
@Id

Tradin-Core/src/main/java/com/tradin/core/subscription/domain/Subscription.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import jakarta.persistence.JoinColumn;
1717
import jakarta.persistence.ManyToOne;
1818
import jakarta.persistence.Table;
19+
import jakarta.persistence.Index;
1920
import jakarta.persistence.UniqueConstraint;
2021
import java.time.LocalDateTime;
2122
import lombok.AccessLevel;
@@ -27,14 +28,11 @@
2728
@Entity
2829
@NoArgsConstructor(access = AccessLevel.PROTECTED)
2930
@Table(
30-
uniqueConstraints = @UniqueConstraint(columnNames = {"account_id", "strategy_id"}),
31+
uniqueConstraints = {
32+
@UniqueConstraint(name = "uk_subscription_strategy_account", columnNames = {"strategy_id", "account_id"})
33+
},
3134
indexes = {
32-
@Index(name = "idx_subscription_account_id", columnList = "account_id"),
33-
@Index(name = "idx_subscription_strategy_id", columnList = "strategy_id"),
34-
@Index(name = "idx_subscription_status", columnList = "status"),
35-
@Index(name = "idx_subscription_strategy_status", columnList = "strategy_id, status"),
36-
@Index(name = "idx_subscription_start_date", columnList = "start_date"),
37-
@Index(name = "idx_subscription_end_date", columnList = "end_date")
35+
@Index(name = "ix_subscription_strategy_status_account", columnList = "strategy_id, status, account_id")
3836
}
3937
)
4038
public class Subscription extends AuditTime {
@@ -43,14 +41,14 @@ public class Subscription extends AuditTime {
4341
@GeneratedValue(strategy = GenerationType.IDENTITY)
4442
private Long id;
4543

46-
@ManyToOne
47-
@JoinColumn(name = "account_id", nullable = false)
48-
private Account account;
49-
5044
@ManyToOne
5145
@JoinColumn(name = "strategy_id", nullable = false)
5246
private Strategy strategy;
5347

48+
@ManyToOne
49+
@JoinColumn(name = "account_id", nullable = false)
50+
private Account account;
51+
5452
@Enumerated(EnumType.STRING)
5553
@Column(nullable = false)
5654
private SubscriptionStatus status;

Tradin-Core/src/main/java/com/tradin/core/users/domain/Users.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
@Entity
2424
@NoArgsConstructor(access = AccessLevel.PROTECTED)
2525
@Table(indexes = {
26-
@Index(name = "idx_users_email", columnList = "email"),
27-
@Index(name = "idx_users_sub", columnList = "sub")
26+
@Index(name = "ix_users_email", columnList = "email"),
27+
@Index(name = "ix_users_sub", columnList = "sub")
2828
})
2929
public class Users extends AuditTime implements UserDetails {
3030

0 commit comments

Comments
 (0)