SQL Graph, introduced in SQL Server 2017, allows you to store graph data and relationships directly in SQL tables. One of the powerful features of SQL Graph is the ability to search and traverse these graph relationships easily using the MATCH clause. This post’ll explore when and why you would want to use MATCH in your SQL Graph pattern queries.
What is MATCH?
The MATCH clause allows you to specify a graph search pattern to find matches in your node and edge tables. The pattern defines how to navigate between graph nodes via the edges that connect them.
For example, you can find friends of a person like this:
MATCH (person)-[friend]->(friend_of_person)
The syntax uses an ASCII-art style to visualize traversing from a person
 node through a friend
 edge to a connected friend_of_person
 node.
Why Use MATCH?
There are several key reasons why the MATCH clause is useful in SQL Graph queries:
1. Intuitive Graph Navigation
The MATCH pattern syntax allows you to express direct relationships between nodes naturally. This makes writing and visualizing graph traversal queries much easier.
2. Flexible Pattern Matching
You can match very flexible patterns to search your graph data. This includes finding variable length paths, repeating nodes/edges, shortest paths, and more.
3. Integration with SQL
MATCH patterns can be combined directly in your SQL SELECT queries for powerful graph operations. This leverages the full power of regular SQL along with graph traversals.
4. Performance
Under the hood, SQL Server optimizes the graph pattern matching into efficient queries across your node and edge tables. This provides high performance graph searches.
MATCH Examples
Here are some simple examples of using MATCH:
-- Find friends of John MATCH (john)-[friend]->(friend) WHERE john.name = 'John' -- Find friends of friends MATCH (john)-[friend]->(friend)<-[friend2]-(fof) WHERE john.name = 'John' -- Recommend jobs based on shared skills MATCH (person)-[skill]->(skill)<-[req]-(job) WHERE person.name = 'John'
As you can see, MATCH enables querying direct relationships intuitively.
Common MATCH Use Cases
Here are some examples of what you can do with MATCH that would be more complex without it:
- Find connections/relationships between people or entities
- Discover recommended friends, followers, collaborators etc.
- Identify fraud networks or money laundering rings
- Analyze network infrastructure connectivity
- Map hierarchies and organizational structures
- Recommend products based on related purchases
- Power specialized graph algorithms like PageRank
So in summary, the MATCH clause is a key reason to use SQL Graph if you need an intuitive, high-performance way to analyze relationships in your graph data. Pattern matching makes complex graph queries easy and integrates into your SQL statements.
You can follow me on X (twitter).
Reference:Â Pinal Dave (https://blog.sqlauthority.com)