• Генерация 1млн билетов со случайными уникальными ID

    Stdit
    @Stdit
    Как вариант, можно завести дополнительное поле (sort) у билетов и заполнить его уникальными случайными числами. После этого сделать индекс по user_id и sort. Тест на таблице в миллион записей (InnoDB):

    mysql> SELECT * from ticket WHERE user_id = 0 ORDER BY sort LIMIT 10;
    +--------+------+---------+
    | id     | sort | user_id |
    +--------+------+---------+
    | 923164 |    1 |       0 |
    | 171274 |    2 |       0 |
    | 217458 |    3 |       0 |
    | 182627 |    4 |       0 |
    | 183120 |    5 |       0 |
    | 483756 |    6 |       0 |
    | 210156 |    7 |       0 |
    | 362920 |    8 |       0 |
    | 311591 |    9 |       0 |
    | 545096 |   10 |       0 |
    +--------+------+---------+
    10 rows in set (0.00 sec)
    
    mysql> UPDATE ticket SET user_id = 1 WHERE id IN (923164, 171274, 217458);
    Query OK, 3 rows affected (0.01 sec)
    Rows matched: 3  Changed: 3  Warnings: 0
    
    mysql> SELECT * from ticket WHERE user_id = 0 ORDER BY sort LIMIT 10;
    +--------+------+---------+
    | id     | sort | user_id |
    +--------+------+---------+
    | 182627 |    4 |       0 |
    | 183120 |    5 |       0 |
    | 483756 |    6 |       0 |
    | 210156 |    7 |       0 |
    | 362920 |    8 |       0 |
    | 311591 |    9 |       0 |
    | 545096 |   10 |       0 |
    | 230442 |   11 |       0 |
    | 472816 |   12 |       0 |
    | 138187 |   13 |       0 |
    +--------+------+---------+
    10 rows in set (0.00 sec)
    
    
    Ответ написан
    Комментировать