Abaixo está a estrutura da minha tabela, a chave primária id
é uma combinação de reportedUserId_reporteeUserId
. Eu a usei para executar INSERT IGNORE
consultas, quero implementar uma partição de tabela na scanType
coluna, mas para isso, tenho que adicioná-la em primary-key, e os valores inseridos serão duplicados por causa de vários scanType
valores, mas quero que seja único.
Então é possível manter um registro exclusivo id(reportedUserId_reporteeUserId)
e uma partição de tabela em scanType
?
+----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| id | varchar(255) | NO | PRI | NULL | |
| reportedUserId | bigint | YES | MUL | NULL | |
| reporteeUserId | bigint | YES | MUL | NULL | |
| createdTime | datetime | YES | | NULL | |
| remarks | varchar(255) | YES | | NULL | |
| contestId | bigint | YES | | NULL | |
| scanType | int | NO | | 1 | |
+----------------+--------------+------+-----+---------+-------+
Não é possível. O MySQL não implementou nenhuma restrição de exclusividade entre partições.
Sugiro que isso
PARTITIONing
provavelmente não seja de nenhuma utilidade. Por favor, forneça a(s) consulta(s) que você acha que pode(m) ser benéfica(s) para que eu possa discutir mais. Considere usar índice(s) composto(s) começando comscanType
em vez de depender de particionamento; a abordagem de indexação provavelmente será pelo menos tão rápida.