migrations/Version20260319120000.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use Doctrine\DBAL\Schema\Schema;
  5. use Doctrine\Migrations\AbstractMigration;
  6. /**
  7.  * Add composite indexes for sponsor-campaign-statistics:
  8.  * - activity (campaign_id, status, created_at) - sort by activity creation date
  9.  * - activity (campaign_id, status, payed_at) - filter paid/unpaid
  10.  * - activity (campaign_id, status, followers) - sort by followers
  11.  * Note: activity.video_id and creator.country_id already have indexes (from initial schema).
  12.  */
  13. final class Version20260319120000 extends AbstractMigration
  14. {
  15.     public function getDescription(): string
  16.     {
  17.         return 'Add indexes for activity and creator statistics query optimization';
  18.     }
  19.     public function up(Schema $schema): void
  20.     {
  21.         $this->addSql('CREATE INDEX idx_activity_campaign_status_created ON activity (campaign_id, status, created_at)');
  22.         $this->addSql('CREATE INDEX idx_activity_campaign_status_payed ON activity (campaign_id, status, payed_at)');
  23.         $this->addSql('CREATE INDEX idx_activity_campaign_status_followers ON activity (campaign_id, status, followers)');
  24.     }
  25.     public function down(Schema $schema): void
  26.     {
  27.         $this->addSql('DROP INDEX idx_activity_campaign_status_created ON activity');
  28.         $this->addSql('DROP INDEX idx_activity_campaign_status_payed ON activity');
  29.         $this->addSql('DROP INDEX idx_activity_campaign_status_followers ON activity');
  30.     }
  31. }