MySQL table proper indexes for performance optimization
&quot;billions of records&quot; and id int(10) unsigned NOT NULL AUTO_INCREMENT -- Beware!  That will top out at about 4 billion.
To speed up the inserts, see if you can batch them something liek this:
insert into `productcatalog`
    (`id`, `SerialNumber`, `BasePrice`, `BatchCode`, `Type`, `ItemCode`,
        `ArrivalDate`, `InsertTimestamp`, `BrandID`, `Model`, `Description`)
    values
    ('1','345618761','23','25','ACC','ABCD','2021-02-14 12:24:44','1613371259','37','RX209',NULL),
    ('2','345618761','24','25','RAF','ABCD','2021-02-15 12:55:17','1613373031','45','GA317',NULL),
    ('3','569014575','43','21','DAT','TPRS','2021-02-13 12:56:34','1613373082','34','PX452',NULL);

For the SELECTs, then indexes (with the columns in the order specified) should help:
INDEX(SerialNumber, ID, ItemCode, BasePrice)  -- for queries 1,2
INDEX(ItemCode, SerialNumber, ArrivalDate)    -- for query 3

Query 1 will (I think) use SerialNumber, ID from the first index and stop after one or two rows.
Query 2 is &quot;covering&quot;, so even it needs to scan several rows, it would have to bounce between the index's BTree and the data's BTree.
Query 3 -- The = columns need to be first and the &quot;range&quot; column (Arrival Date) last.
The following changes won't improve performance; I just think they are clearer.  Instead of
AND ItemCode!=&quot;ABCD&quot; 
AND ItemCode!=&quot;PQRS&quot; 
AND ItemCode!=&quot;MNOP&quot; 

AND (ArrivalDate&gt;='2019-01-01 00:00:00' AND ArrivalDate&lt;='2020-12-31 23:59:59') 

I prefer these:
AND ItemCode NOT IN (&quot;ABCD&quot;, &quot;PQRS&quot;, &quot;MNOP&quot;)

AND ArrivalDate &gt;= '2019-01-01'
AND ArrivalDate  &lt; '2019-01-01' + INTERVAL 1 YEAR

The following will explain some of my suggestions:  http://mysql.rjweb.org/doc.php/index_cookbook_mysql
This seems odd for a &quot;price&quot;:  decimal(4,1)