0

I have made a query in which i have to find keywords from comments. I have more than 4 millions keywords. Special character can be comes after/before any Keyword in comments so I have to make more than 50 patterns to find the keywords. Here is the query :

[SELECT DISTINCT a.keywords,a.productID,oproduct_name 
FROM review1_filter_keyword_comment as a where ("16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('% ', LCASE(a.keywords), ' %') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('% ', LCASE(a.keywords), '') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('', LCASE(a.keywords), ' %') OR
 "16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('', LCASE(a.keywords), '') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('% ', LCASE(a.keywords), '.%') OR
 "16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%/', LCASE(a.keywords), '.%') OR
 "16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%,', LCASE(a.keywords), '.%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%:', LCASE(a.keywords), '.%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%-', LCASE(a.keywords), '.%') OR
 "16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('', LCASE(a.keywords), '.%') OR
 "16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('', LCASE(a.keywords), '-%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%-', LCASE(a.keywords), ' %') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%-', LCASE(a.keywords), '') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('% ', LCASE(a.keywords), '-%') OR
 "16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%(', LCASE(a.keywords), '-%') OR "16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%-', LCASE(a.keywords), ')%') OR
 "16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%/', LCASE(a.keywords), '-%') OR
 "16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%-', LCASE(a.keywords), '/%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%-', LCASE(a.keywords), ',%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%,', LCASE(a.keywords), '-%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%:', LCASE(a.keywords), '-%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%-', LCASE(a.keywords), ':%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%-', LCASE(a.keywords), '') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%(', LCASE(a.keywords), ' %') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('% ', LCASE(a.keywords), ')%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%(', LCASE(a.keywords), ')%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%(', LCASE(a.keywords), '/%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%/', LCASE(a.keywords), ')%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%(', LCASE(a.keywords), ',%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%,', LCASE(a.keywords), ')%') OR
 "16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%(', LCASE(a.keywords), ':%') OR
 "16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%:', LCASE(a.keywords), ')%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('% ', LCASE(a.keywords), '/%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('', LCASE(a.keywords), '/%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%/', LCASE(a.keywords), '') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%/', LCASE(a.keywords), '/%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%/', LCASE(a.keywords), ',%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%,', LCASE(a.keywords), '/%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%/', LCASE(a.keywords), ':%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%:', LCASE(a.keywords), '/%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('% ', LCASE(a.keywords), ',%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%,', LCASE(a.keywords), '') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('', LCASE(a.keywords), ',%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%:', LCASE(a.keywords), ',%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%,', LCASE(a.keywords), ',%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%,', LCASE(a.keywords), ':%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('', LCASE(a.keywords), ':%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%:', LCASE(a.keywords), ':%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('% ', LCASE(a.keywords), ':%') OR 
"16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%:', LCASE(a.keywords), ' %') OR
 "16540221 AM-OH-AGC-UP64050-2-1" LIKE CONCAT('%:', LCASE(a.keywords), '')) and 
 a.keywords<>'' and a.keywords IS NOT NULL and LENGTH(a.keywords)>2 and 
isActive='1' and productID<>'' and productID IS NOT NULL order by keywords][1] 

When i run this query single time it takes 6021 ms. But if I run multiple times like more than 50 it gets crash and shows 500 Internal server error (link: enter image description here). I know my query takes very long time to run due to this the error occurs. So i want to know is there any way to optimize my query.

Thank you

Manish
  • 3,443
  • 1
  • 21
  • 24

0 Answers0