Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Tabellenpartition basierend auf der letzten Ziffer einer Spalte/ID

Ich habe mich gefragt, ob beim Erstellen einer Partition eine Mod-Funktion erlaubt ist, ich habe es mit

gemacht
CREATE TABLE ti (id INT, amount DECIMAL(7,2))
ENGINE=INNODB
PARTITION BY HASH( MOD(id,10) )
PARTITIONS 10;

Dadurch wurden 10 Partitionen erstellt, wobei jede ID in ihrer Partition endet und mit derselben Nummer endet wie die letzte Ziffer der ID

Ich habe ein paar Zeilen hinzugefügt

    INSERT INTO ti VALUES (23123,343.22);
    INSERT INTO ti VALUES (23123,343.22);
    INSERT INTO ti VALUES (23144,343.22);
    INSERT INTO ti VALUES (23114,343.22);
    INSERT INTO ti VALUES (23124,343.22);
    INSERT INTO ti VALUES (23166,343.22);
    INSERT INTO ti VALUES (23116,343.22);
    INSERT INTO ti VALUES (23112,343.22);
    INSERT INTO ti VALUES (23199,343.22);

dann getestet

 SELECT
  partition_name part,
  partition_expression expr,
  partition_description descr,
  table_rows
FROM
  INFORMATION_SCHEMA.partitions
WHERE
  TABLE_SCHEMA = SCHEMA()
  AND TABLE_NAME='ti';

AUSGABE:

part    expr    descr   table_rows
p0   MOD(id,10) \N  0
p1   MOD(id,10) \N  0
p2   MOD(id,10) \N  1
p3   MOD(id,10) \N  2
p4   MOD(id,10) \N  3
p5   MOD(id,10) \N  0
p6   MOD(id,10) \N  2
p7   MOD(id,10) \N  0
p8   MOD(id,10) \N  0
p9   MOD(id,10) \N  1

genau das, was ich wollte, danke für den Hinweis auf den richtigen Link Incognito, aber deine Antwort war falsch, vielleicht hast du sie falsch verstanden