我想在 MySQL 資料庫的單個表中的多個列上設定索引。讀完這篇文章后,我不能 100% 確定使用哪種方法。
所以我的(簡化的)表如下所示:
@Data
@Entity
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "loan")
public class Loan {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "loan_id", unique = true, nullable = false)
private long id;
@Column(name = "amount", unique = false, nullable = false)
private double amount;
@Column(name = "rate", unique = false, nullable = false)
private double rate;
@Column(name = "payments", unique = false, nullable = false)
private int payments;
@Column(name = "pmt", unique = false, nullable = false)
private double pmt;
}
我會有很多搜索查詢,例如:
SELECT * FROM Loan loan
WHERE loan.amount =: amount AND loan.rate =: rate AND loan.payments =: payments AND loan.pmt =: pmt
LIMIT 1;
現在,我想索引WHERE
子句中的欄位。本質上,我想實作“復合鍵”的效果,其中表loan
中只有提到的欄位的唯一組合。所以我不能有兩行都有一些值。
有這樣的配置嗎?
uj5u.com熱心網友回復:
您可以添加一個 UNIQUE 約束,該約束將被自動索引
@Table(uniqueConstraints =
{
@UniqueConstraint(name = "UniqueWhereclause", columnNames = { "amount", "rate","payments","pmt" })})
或者您可以單獨創建索引
@Entity
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "loan", indexes = {
@Index(columnList = "amount, rate,payments,pmt", name = "name_idx") })
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/497846.html
上一篇:phpcurl_exec回傳“HTTP/1.1100Continue”,后跟“HTTP/1.1404NotFound”
下一篇:嘗試使用JPA時獲取“java.lang.reflect.InaccessibleObjectException:無法使欄位私有int(變數)(包)可訪問”