如何使用全文搜索和大量数据减少查询执行时间

时间:2017-08-25 12:12:18

标签: sql-server

Here is the structure of my table

该表包含超过300万条记录,我需要应用全文搜索查询(实际上是一个非常大的查询)。 这是查询及其响应:

select Top 10 SerialNo, Registrationno,Status,MarkIdentification,OwnerName,Casefilestatementstext from Trademark where 
(MarkIdentification LIKE '% CALIDOUBLE %' 
OR MarkIdentification LIKE 'CALIDOUBLE %' 
OR MarkIdentification LIKE 'CALIDOUBLEs %' 
OR MarkIdentification LIKE '% CALIDOUBLEs %' 
OR MarkIdentification LIKE 'CALIDOUBLE''s %' 
OR MarkIdentification LIKE 'CALIDOUBLE''s%'  
OR MarkIdentification LIKE 'CALIDOUBLE' 
OR MarkIdentification LIKE '%-CALIDOUBLE' 
OR MarkIdentification LIKE '% CALIDOUBLE')  
AND ( 
USClassId like  '%001%' OR USClassId like  '%023%' OR USClassId like  '%027%' OR USClassId like  '%034%' 
OR USClassId like  '%038%' OR USClassId like  '%039%' OR USClassId like  '%045%' OR USClassId like  '%046%' 
OR USClassId like  '%047%' OR USClassId like  '%048%' OR USClassId like  '%100%' OR USClassId like  '%101%' 
OR USClassId like  '%104%' OR USClassId like  '%105%' OR USClassId like  '%107%' ) 
AND ((Casefilestatementstext like '%Ale%') 
OR(Casefilestatementstext like '%Ales%') 
OR(Casefilestatementstext like '%Apron%') 
OR(Casefilestatementstext like '%Aprons%') 
OR(Casefilestatementstext like '%Barbeque%') 
OR(Casefilestatementstext like '%Barbeques%') 
OR(Casefilestatementstext like '%Beany%') 
OR(Casefilestatementstext like '%Beanies%') 
OR(Casefilestatementstext like '%Beer%') 
OR(Casefilestatementstext like '%Beers%') 
OR(Casefilestatementstext like '%Beverage%') 
OR(Casefilestatementstext like '%Beverages%') 
OR(Casefilestatementstext like '%Blouse%') 
OR(Casefilestatementstext like '%Blouses%') 
OR(Casefilestatementstext like '%Bologna%') 
OR(Casefilestatementstext like '%Bolognas%') 
OR(Casefilestatementstext like '%Boot%') 
OR(Casefilestatementstext like '%Boots%') 
OR(Casefilestatementstext like '%Bread%') 
OR(Casefilestatementstext like '%Breads%') 
OR(Casefilestatementstext like '%Burger%') 
OR(Casefilestatementstext like '%Burgers%') 
OR(Casefilestatementstext like '%Cake%') 
OR(Casefilestatementstext like '%Cakes%') 
OR(Casefilestatementstext like '%Candy%') 
OR(Casefilestatementstext like '%Candies%') 
OR(Casefilestatementstext like '%Cap%') 
OR(Casefilestatementstext like '%Caps%') 
OR(Casefilestatementstext like '%Catsup%') 
OR(Casefilestatementstext like '%Catsups%') 
OR(Casefilestatementstext like '%Cattle%') 
OR(Casefilestatementstext like '%Cattle%') 
OR(Casefilestatementstext like '%Cheese%') 
OR(Casefilestatementstext like '%Cheese%') 
OR(Casefilestatementstext like '%Clock%') 
OR(Casefilestatementstext like '%Clocks%') 
OR(Casefilestatementstext like '%Coat%') 
OR(Casefilestatementstext like '%Coats%') 
OR(Casefilestatementstext like '%Coffee%') 
OR(Casefilestatementstext like '%Coffees%') 
OR(Casefilestatementstext like '%Collar%') 
OR(Casefilestatementstext like '%Collars%') 
OR(Casefilestatementstext like '%Cuff%') 
OR(Casefilestatementstext like '%Cuffs%') 
OR(Casefilestatementstext like '%Dress%') 
OR(Casefilestatementstext like '%Dresses%') 
OR(Casefilestatementstext like '%Espresso%') 
OR(Casefilestatementstext like '%Espressoes%') 
OR(Casefilestatementstext like '%Falafel%')
OR(Casefilestatementstext like '%Falafels%')
OR(Casefilestatementstext like '%Fish%')
OR(Casefilestatementstext like '%Fish%') 
OR(Casefilestatementstext like '%Flour%')
OR(Casefilestatementstext like '%Flours%')
OR(Casefilestatementstext like '%Food%')
OR(Casefilestatementstext like '%Foods%') 
OR(Casefilestatementstext like '%Frankfurter%')
OR(Casefilestatementstext like '%Frankfurters%')
OR(Casefilestatementstext like '%Ham%') 
OR(Casefilestatementstext like '%Hams%')
OR(Casefilestatementstext like '%Hamburger%')
OR(Casefilestatementstext like '%Hamburgers%')
OR(Casefilestatementstext like '%Hat%') 
OR(Casefilestatementstext like '%Hats%')
OR(Casefilestatementstext like '%Jacket%')
OR(Casefilestatementstext like '%Jackets%')
OR(Casefilestatementstext like '%Jean%') 
OR(Casefilestatementstext like '%Jeans%')
OR(Casefilestatementstext like '%Magazine%')
OR(Casefilestatementstext like '%Magazines%') 
OR(Casefilestatementstext like '%Marinade%')
OR(Casefilestatementstext like '%Marinades%')
OR(Casefilestatementstext like '%Meatball%') 
OR(Casefilestatementstext like '%Meatballs%')
OR(Casefilestatementstext like '%Milk%')
OR(Casefilestatementstext like '%Milk%')
OR(Casefilestatementstext like '%Mustard%') 
OR(Casefilestatementstext like '%Mustards%')
OR(Casefilestatementstext like '%Pajama%')
OR(Casefilestatementstext like '%Pajamas%')
OR(Casefilestatementstext like '%Pant%') 
OR(Casefilestatementstext like '%Pants%')
OR(Casefilestatementstext like '%Pasta%')
OR(Casefilestatementstext like '%Pastas%')
OR(Casefilestatementstext like '%Pecan%') 
OR(Casefilestatementstext like '%Pecans%')
OR(Casefilestatementstext like '%Pepperoni%')
OR(Casefilestatementstext like '%Pepperonis%')
OR(Casefilestatementstext like '%Pickle%') 
OR(Casefilestatementstext like '%Pickles%')
OR(Casefilestatementstext like '%Pie%')
OR(Casefilestatementstext like '%Pies%')
OR(Casefilestatementstext like '%Pizza%') 
OR(Casefilestatementstext like '%Pizzas%')
OR(Casefilestatementstext like '%Poultry%')
OR(Casefilestatementstext like '%Poultries%')
OR(Casefilestatementstext like '%Rice%') 
OR(Casefilestatementstext like '%Rice%')
OR(Casefilestatementstext like '%Roast%')
OR(Casefilestatementstext like '%Roasts%')
OR(Casefilestatementstext like '%Roll%') 
OR(Casefilestatementstext like '%Rolls%')
OR(Casefilestatementstext like '%Salami%')
OR(Casefilestatementstext like '%Salamis%')
OR(Casefilestatementstext like '%Salsa%') 
OR(Casefilestatementstext like '%Salsas%')
OR(Casefilestatementstext like '%Sandwich%')
OR(Casefilestatementstext like '%Sandwiches%')
OR(Casefilestatementstext like '%Sauce%') 
OR(Casefilestatementstext like '%Sauces%')
OR(Casefilestatementstext like '%Sausage%')
OR(Casefilestatementstext like '%Sausages%')
OR(Casefilestatementstext like '%Seasoning%') 
OR(Casefilestatementstext like '%Seasonings%')
OR(Casefilestatementstext like '%Shirt%')
OR(Casefilestatementstext like '%Shirts%')
OR(Casefilestatementstext like '%Short%') 
OR(Casefilestatementstext like '%Shorts%')
OR(Casefilestatementstext like '%Slack%')
OR(Casefilestatementstext like '%Slacks%')
OR(Casefilestatementstext like '%Smoothy%') 
OR(Casefilestatementstext like '%Smoothies%')
OR(Casefilestatementstext like '%Spice%')
OR(Casefilestatementstext like '%Spices%')
OR(Casefilestatementstext like '%Stout%') 
OR(Casefilestatementstext like '%Stouts%')
OR(Casefilestatementstext like '%Sugar%')
OR(Casefilestatementstext like '%Sugars%')
OR(Casefilestatementstext like '%Suit%') 
OR(Casefilestatementstext like '%Suits%')
OR(Casefilestatementstext like '%Sweater%')
OR(Casefilestatementstext like '%Sweaters%')
OR(Casefilestatementstext like '%Sweatshirt%') 
OR(Casefilestatementstext like '%Sweatshirts%')
OR(Casefilestatementstext like '%Syrup%')
OR(Casefilestatementstext like '%Syrups%')
OR(Casefilestatementstext like '%Tie%') 
OR(Casefilestatementstext like '%Ties%')
OR(Casefilestatementstext like '%Trouser%')
OR(Casefilestatementstext like '%Trousers%')
OR(Casefilestatementstext like '%T-shirts%') 
OR(Casefilestatementstext like '%T-shirts%')
OR(Casefilestatementstext like '%Underwear%')
OR(Casefilestatementstext like '%Underwears%')
OR(Casefilestatementstext like '%Watch%') 
OR(Casefilestatementstext like '%Watches%')
OR(Casefilestatementstext like '%Wine%')
OR(Casefilestatementstext like '%Wines%') 
) 
AND (
OR( CONTAINS(Casefilestatementstext,'NEAR((Bakery,good), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Bakeries,good), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Bakery,goods), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Bakeries,goods), 6)'))  
OR( CONTAINS(Casefilestatementstext,'NEAR((Bean,garbanzo,processed), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Beans,garbanzo,processed), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Bean,garbanzoes,processed), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Beans,garbanzoes,processed), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Bean,garbanzo,processeds), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Beans,garbanzo,processeds), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Bean,garbanzoes,processeds), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Beans,garbanzoes,processeds), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((beauty,contest), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((beauties,contest), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((beauty,contests), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((beauties,contests), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Beef,patty), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Beef,patty), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Beef,patties), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Beef,patties), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Beef,minced), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Beef,minced), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Beef,minceds), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Beef,minceds), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Beef,processed), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Beef,processed), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Beef,processeds), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Beef,processeds), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((beverage,station), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((beverages,station), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((beverage,stations), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((beverages,stations), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Beverage,maltless), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Beverages,maltless), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Beverage,maltlesses), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Beverages,maltlesses), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Beverage,non-alcoholic), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Beverages,non-alcoholic), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Beverage,non-alcoholic), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Beverages,non-alcoholic), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((boat,cruis), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((boats,cruis), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((boat,cruises), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((boats,cruises), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Bread,mix), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Breads,mix), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Bread,mixes), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Breads,mixes), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Bread,pocket), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Breads,pocket), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Bread,pockets), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Breads,pockets), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Cake,mix), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Cakes,mix), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Cake,mixes), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Cakes,mixes), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((catering,beverage), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((caterings,beverage), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((catering,beverage), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((caterings,beverage), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((catering,beverages), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((caterings,beverages), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((catering,beverages), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((caterings,beverages), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((catering,food), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((caterings,food), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((catering,food), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((caterings,food), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((catering,foods), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((caterings,foods), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((catering,foods), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((caterings,foods), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Chicken,prepared), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Chickens,prepared), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Chicken,prepareds), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Chickens,prepareds), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Chickpea,processed), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Chickpeas,processed), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Chickpea,processeds), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Chickpeas,processeds), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((coffee,certification), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((coffees,certification), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((coffee,certifications), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((coffees,certifications), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((coffee,shop), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((coffees,shop), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((coffee,shops), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((coffees,shops), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((concession,stand), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((concessions,stand), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((concession,stands), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((concessions,stands), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((convenience,store), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((conveniences,store), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((convenience,stores), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((conveniences,stores), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((cooking,cours), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((cookings,cours), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((cooking,courses), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((cookings,courses), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((cooking,lecture), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((cookings,lecture), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((cooking,lectures), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((cookings,lectures), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Cottage,cheese), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Cottages,cheese), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Cottage,cheeses), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Cottages,cheeses), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Custard,frozen), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Custards,frozen), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Custard,frozens), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Custards,frozens), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,concert,production), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,concert,production), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,concert,production), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,concert,production), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,concerts,production), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,concerts,production), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,concerts,production), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,concerts,production), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,concert,productions), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,concert,productions), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,concert,productions), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,concert,productions), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,concerts,productions), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,concerts,productions), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,concerts,productions), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,concerts,productions), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,firework), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,firework), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,firework), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,firework), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,fireworks), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,fireworks), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,fireworks), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,fireworks), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,hosting,party), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,hosting,party), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,hosting,party), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,hosting,party), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,hostings,party), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,hostings,party), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,hostings,party), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,hostings,party), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,hosting,parties), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,hosting,parties), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,hosting,parties), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,hosting,parties), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,hostings,parties), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,hostings,parties), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainment,hostings,parties), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((entertainments,hostings,parties), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Fish,glaze), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fish,glaze), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fish,glazes), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fish,glazes), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Fish,rub,dry), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fish,rub,dry), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fish,rubs,dry), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fish,rubs,dry), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fish,rub,dries), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fish,rub,dries), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fish,rubs,dries), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fish,rubs,dries), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((food,delivery), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((foods,delivery), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((food,deliveries), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((foods,deliveries), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((food,preparation), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((foods,preparation), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((food,preparations), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((foods,preparations), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Food,product), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Foods,product), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Food,products), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Foods,products), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Food,product,Chinese), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Foods,product,Chinese), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Food,products,Chinese), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Foods,products,Chinese), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Food,product,Chinese), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Foods,product,Chinese), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Food,products,Chinese), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Foods,products,Chinese), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Food,product,frozen), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Foods,product,frozen), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Food,products,frozen), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Foods,products,frozen), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Food,product,frozens), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Foods,product,frozens), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Food,products,frozens), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Foods,products,frozens), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Fruit,drink), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fruits,drink), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fruit,drinks), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fruits,drinks), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Fryer,deep,fat), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fryers,deep,fat), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fryer,deeps,fat), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fryers,deeps,fat), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fryer,deep,fats), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fryers,deep,fats), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fryer,deeps,fats), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Fryers,deeps,fats), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((gourmet,shop,restaurant), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((gourmets,shop,restaurant), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((gourmet,shops,restaurant), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((gourmets,shops,restaurant), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((gourmet,shop,restaurants), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((gourmets,shop,restaurants), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((gourmet,shops,restaurants), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((gourmets,shops,restaurants), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Hot,dog), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Hots,dog), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Hot,dogs), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Hots,dogs), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((hotel,reservation), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((hotels,reservation), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((hotel,reservations), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((hotels,reservations), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,cream), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,cream), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,creams), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,creams), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,milk,bar), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,milk,bar), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,milk,bar), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,milk,bar), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,milk,bars), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,milk,bars), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,milk,bars), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,milk,bars), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,flavored,colored), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,flavored,colored), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,flavoreds,colored), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,flavoreds,colored), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,flavored,coloreds), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,flavored,coloreds), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,flavoreds,coloreds), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Ice,flavoreds,coloreds), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((internet,shopping,meat), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((internets,shopping,meat), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((internet,shoppings,meat), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((internets,shoppings,meat), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((internet,shopping,meat), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((internets,shopping,meat), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((internet,shoppings,meat), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((internets,shoppings,meat), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((internet,shopping,meats), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((internets,shopping,meats), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((internet,shoppings,meats), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((internets,shoppings,meats), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((internet,shopping,meats), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((internets,shopping,meats), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((internet,shoppings,meats), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((internets,shoppings,meats), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((juice,bar), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((juices,bar), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((juice,bars), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((juices,bars), 6)')) 
/* 750 rows of same kind of full text search*/
OR( CONTAINS(Casefilestatementstext,'NEAR((Tacoes,shell), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Taco,shells), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Tacoes,shells), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Top,tank), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Tops,tank), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Top,tanks), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Tops,tanks), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((travel,agency), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((travels,agency), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((travel,agencies), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((travels,agencies), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Vegetable,dried), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Vegetables,dried), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Vegetable,drieds), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Vegetables,drieds), 6)')) 
OR( CONTAINS(Casefilestatementstext,'NEAR((Waffle,mix), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Waffles,mix), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Waffle,mixes), 6)'))
OR( CONTAINS(Casefilestatementstext,'NEAR((Waffles,mixes), 6)'))
  )
Order by Registrationno desc, SerialNo desc 

以下是查询的回复:

Result of the query

如何通过优化查询或更改表结构来获得快速结果?

1 个答案:

答案 0 :(得分:0)

我会添加一个" Processed" BIT字段到商标表,默认值为0,然后制作一个"哈希表"包含TrademarkID列作为Trademark表中的外键和一系列Bit字段,用于指示该怪物WHERE子句中的特定项是否为TRUE。使用夜间计划作业更新该哈希表,该作业针对每个处理标记为0的记录运行,然后在处理完每个记录后将其处理为1。然后对其进行搜索,并使用当前查询UNION结果,该查询仅查看Processed为0的记录。

实际上,您还可以通过INSERT和UPDATE触发器使这个哈希表保持最新(这种想法在我开车上班时发生)。我通常不会使用触发器,但如果您对它们感到满意,那么这将是另一种选择,它会简化查询逻辑。

此外,CALIDOUBLE上的一些LIKE比较是多余的,因为如果一个是真的那么另一个也必须为真,并且你可以用" ="替换任何没有通配符的LIKE。 ,这将表现更好。但是,无论如何,由OR组合的一堆LIKE语句将会很慢。

以下是关于如何处理这个问题的一些额外想法 - 我希望它能让我的想法更加清晰:

在TradeMark表中添加一个字段,指示是否需要对该记录进行哈希处理。我打电话给它" NeedsHashed"在我的例子中。

每当插入或更新TradeMark记录时,请设置" NeedsHashed"到" 1"。可能会使用触发器。

创建一个名为TradeMarkHash的表。我将勾勒出几行给你的想法

Create Table TradeMarkHash
(
    TradeMarkID BigInt not null         -- this is the PK on this table, as well
    , Calidouble bit
    , USClassID bit
    , CaseFileAle bit
    , CaseFileNearBakeryGood bit
    -- etc.
)

接下来,创建一个在代理作业上每晚运行的过程。这个程序:

  1. 选择NeedHashed值为" 1"
  2. 的每条记录
  3. 应用该WHERE子句的每个部分的逻辑来计算相应的标志:
    • 如果对Calidouble的任何LIKE比较为真,则将TradeMarkHash.Calidouble设置为" 1"
    • 如果USCLassID是指定值之一,请将TradeMarkHash.USClassID设置为" 1"
    • 如果Casefilestatementstext类似于'%Ale%'或喜欢'%Ales%'将TradeMarkHash.CaseFileAle设置为" 1"
    • 如果Casefilestatementstext满足"面包店/面包店"的任何NEAR比较。和" good / goods",将TradeMarkHash.CaseFileNearBakeryGood设置为" 1"
  4. 将TradeMark.NeedHashed设置为" 0"
  5. 注意,这些是" upserts" - 如果存在给定TradeMarkID的记录,则它是更新;如果没有,它就是一个插入物。此外,寻找简化这些比较的位置 - 例如,任何类似LIKE'%Ale%"将会像LIles'%Ales%'以及

    现在,当你进行选择时,而不是在TradeMark表中找到与该怪物相匹配的记录,以用于各种' Calidouble' permeations,你会这样做:

    Select tm.<fields>
        From TradeMark as tm
            Inner Join TradeMarkHash as tmh
                on tm.TradeMarkID = tmh.TradeMarkID
        Where tmh.Calidouble = 1
        And tmh.USClassID = 1
        ... and whatever other conditions are appropriate   
    

    我希望上面的内容比你最初发布的查询快很多。基本上,您在服务器负载较低的时间段内提前执行WHERE逻辑,并存储结果供以后使用。但是,与所有性能问题一样,您必须进行测试。