Indexing Data

Indexing Data

Entity Attribute Value (EAV) data model meets SQL Server Clustered Columnstore for dramatic performance improvement (Part #1)

<sarcasm>Want to have complete flexibility adding/removing attributes without DDL, store all your data in a single database table and still have performance then read on….</> It’s often the complaint of developers they can’t easily adjust the data model and add more attributes to it (columns), rightly or wrongly it happens and it’s a legitimate requirement. Ordinarily data […]

SQL Server Hekaton (XTP) in-memory tables: Choosing the correct BUCKET_COUNT for a Hash Index

In this post I cover off how to choose the correct number for the BUCKET_COUNT and how you go about that, also, how to monitor and change the bucket_count. The general approach is that you set the BUCKET_COUNT to the number of unique values there will be given just the columns on your hash index (see […]

SQL Server Hekaton (XTP) in-memory Tables: Range Indexes and Row Chains

Hash and Range indexes both involve row chains, if you haven’t already read my post on Understanding the row chains of Hash Indexes I’d suggest you do before continuing with this post which essentially is a continuation of it and assumes you know the basics of row chains already. A range index is implemented using the […]

SQL Server Hekaton In-memory tables: Understanding the Row Chains of Hash Indexes

Having a good understanding of how the hashing and row chains work will go a long way in helping you design for performance and diagnose performance and resource issues you may get once live. This post covers off some of the basics and hopefully will give you a working insight. We’ll start with a Hash […]

Hekaton In-Memory Tables: HASH Indexes

The purpose of this post is to help you understand the new HASH indexing in SQL Server 2014 in-memory tables feature (project Hekaton). As ever, it’s actually quite a big topic so I’ll cover aspects in multiple posts (I’ll pop back here and update the links once complete)… Post 1 – How the Hash Index works Post […]

What is Hashing; using Modulus to partition data

Hopefully this post goes some way in helping the reader understand better what hashing, hash indexes are and the need for row chains with In-memory Tables (Hekaton) in SQL Server 2014 hash indexes. Purpose of hashing? Hashing can be used to index character data, instead of building an index on a varchar(50) column for example, […]

Reducing SQL Server IO and Access Times using Bloom Filters – Part 3 (Inserting Data)

Part 2 (Basics of the method in SQL Server) explained how to get data into a Bloom Filter structure, it now needs persisting. This post explains a method on how a Bloom Filter can be stored in a SQL Server database – I assume you have read Part 1 and Part 2 and understand about […]

Reducing SQL Server IO and Access Times using Bloom Filters – Part 2 (Basics of the method in SQL Server)

Part 1 addressed Bloom Filter Concepts, if you haven’t already done so its important to start there. In this post I will show the basics of how we set and query the bit array that holds our Bloom Filter structure. Step 1 – Hash the target Data element (key) Multiple hash functions are used over your […]

Reducing SQL Server IO and Access Times using Bloom Filters – Part 1 (Concepts)

Given a 10 million row table with a GUID as a primary key, we have a 50,000 row table that we want to look up to see if we have any matching rows and for those matching rows aggregate the data – lets assuming that 50% of the rows have a corresponding match – so […]