Предполагая, что ваша таблица строк на 50 миллионов содержит дубликаты (возможно, это является частью проблемы), и предполагая, что SQL Server (синтаксис может измениться, но концепция похожа на большинство СУБД), другой вариант - хранить домены в поискетаблица, например
CREATE TABLE dbo.Domains
(
DomainID INT IDENTITY(1,1) PRIMARY KEY,
DomainName VARCHAR(255) NOT NULL
);
CREATE UNIQUE INDEX dn ON dbo.Domains(DomainName);
Когда вы загружаете новые данные, проверьте, являются ли какие-либо из доменных имен новыми, и вставьте их в таблицу Домены.Затем в вашей большой таблице вы просто включаете DomainID.Это не только уменьшит размер вашей таблицы строк на 50 миллионов, но и сделает поиск более эффективным.
SELECT * -- please specify column names
FROM dbo.tblDomainResults AS dr
INNER JOIN dbo.Domains AS d
ON dr.DomainID = d.DomainID
WHERE d.DomainName LIKE '%lifeis%';
Конечно, за исключением самых маленьких таблиц, это всегда поможет избежать предложений LIKE.с лидирующим подстановочным знаком.