
| hash anti-semijoin: query execution algorithms | Hash antisemijoin | 
| hash B-tree indexes: about | Hash B-tree indexes | 
| hash distinct: query execution algorithms | Hash distinct | 
| hash group by: query execution algorithms | Hash group by | 
| hash joins: query execution algorithms | Hash join Hash semijoin Hash antisemijoin | 
| hash maps: query execution algorithms | Bloom filter | 
| hash not exists: query execution algorithms | Hash antisemijoin | 
| hash semijoin: query execution algorithms | Hash semijoin | 
| hash values: indexes | Hash B-tree indexes | 
| HAVING clause: GROUP BY and | The HAVING clause: selecting groups of data | 
| HAVING clause: logical operators | The HAVING clause: selecting groups of data | 
| HAVING clause: performance | Predicate analysis | 
| HAVING clause: selecting groups of data | The HAVING clause: selecting groups of data | 
| HAVING clause: subqueries | Subqueries in the HAVING clause | 
| HAVING clause: with and without aggregates | The HAVING clause: selecting groups of data | 
| hide directive: using | Using FOR XML EXPLICIT | 
| hierarchical data structures | Selecting hierarchical data Parts explosion problems | 
| histograms: about | Optimizer estimates | 
| histograms: updating | Updating column statistics | 
| HOLDLOCK keyword: Transact-SQL | Writing compatible queries | 
| how data can become invalid | How data can become invalid | 
| how database contents change | How database contents change | 
| how joins work | How joins work | 
| how locking is implemented | Two-phase locking | 
| how locking works | How locking works | 
| how NULL affects Transact-SQL outer joins | How NULL affects Transact-SQL joins | 
| how queries with group by are executed | How queries with GROUP BY are executed | 
| how subqueries work | How subqueries work | 
| how the optimizer works | How the optimizer works |