code_junkie

Optimal LIKE search in SQL

Nov 13th, 2011
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. SELECT NeededFields FROM Parts WHERE PartNumber LIKE 'ML%'
  2.  
  3. CREATE INDEX partno_idx ON parts (SUBSTRING(partnumber,0,1))
  4.  
  5. SELECT top 100 NeededFields FROM Parts WHERE PartNumber LIKE '%'
  6. SELECT top 100 NeededFields FROM Parts WHERE PartNumber LIKE 'M%'
  7. SELECT top 100 NeededFields FROM Parts WHERE PartNumber LIKE 'ML%'
  8. SELECT top 100 NeededFields FROM Parts WHERE PartNumber LIKE 'ML0833%'
  9.  
  10. CREATE INDEX index_zones_name ON Zones(name);
  11.  
  12. EXPLAIN SELECT id FROM Zones WHERE name = 'toto.fr';
  13. QUERY PLAN
  14. -------------------------------------------------------------------------------
  15. Index Scan using index_zones_name on zones (cost=0.00..21.06 rows=4 width=4)
  16. Index Cond: (name = 'toto.fr'::text)
  17.  
  18. EXPLAIN SELECT id FROM Zones WHERE name LIKE 'toto%';
  19. QUERY PLAN
  20. ---------------------------------------------------------
  21. Seq Scan on zones (cost=0.00..75991.43 rows=1 width=4)
  22. Filter: (name ~~ 'toto%'::text)
  23.  
  24. mysql> CREATE INDEX part_of_name ON customer (name(10));
Add Comment
Please, Sign In to add comment