If you have a large catalogue, using some standard features are simply impractical to use. Recently, we needed to disable an entire range of products based on its SKU – via the backend, bulk status changing 5000 products will take hours, but fortunately SQL is a spot more lightweight.
In the code below (to be run via command line MySQL or phpMyAdmin), just replace %SKU% with your SKU identifier and use % as a wildcard or _ as a single character wildcard.
This will obviously apply to any other attribute, so just change the code as necessary.
enabled = 1 disabled = 2
UPDATE catalog_product_entity_int cpei, catalog_product_entity cpe SET cpei.value = "2" WHERE cpe.entity_id = cpei.entity_id AND cpe.sku LIKE '%SKU%' AND cpei.attribute_id = 273
Disable by category
Another resource for disabling by category is
UPDATE catalog_product_entity_int cpei, catalog_product_entity cpe SET value = '2' WHERE cpe.entity_id = cpei.entity_id AND attribute_id = "80" AND cpe.category_ids = "%35%" AND (cpe.category_ids LIKE "35,%" OR cpe.category_ids LIKE "%,35,%")
Remember to rebuild the category indexes
After the MySQL above has run – you’ll need to let Magento take the reigns back a little to update the category indexes, this is quite straightforward, but a little time consuming.
Login to your admin and go to System > Cache Management, the select Rebuild Catalog Index