background preloader

DB Design

Facebook Twitter

Sql - COUNT(*) vs. COUNT(1) vs. COUNT(pk): which is better? What's the difference between a temp table and table variable in SQL Server? SQL Server 2014 In Memory OLTP: Memory-Optimized Table Types and Table Variables - SQL Server Team Blog. SQL Server 2014 In-Memory OLTP introduces two new widely advertised kinds of database objects: memory-optimized tables for efficient data access, and natively compiled stored procedures for efficient query processing and business logic execution. However, there is a third kind of object introduced by In-Memory OLTP: the memory-optimized table type. The use of memory-optimized table variables has a number of advantages over traditional table variables: The variables are truly in memory: they are guaranteed to never spill to disk.Data access is more efficient due to the same memory-optimized algorithm and data structures used for memory-optimized tables, especially when the variables are used in natively compiled stored procedures.Finally, with memory-optimized table variables there is no tempdb utilization: table variables are not in tempdb, and do not use any resources in tempdb.

The typical usage scenarios for memory-optimized table variables are: CREATE TYPE [Sales]. @DueDate = @DueDate, Execution Plan Basics. We are very pleased to be allowed to publish the first chapter from Grant Fritchey's excellent new book, Dissecting SQL Server Execution Plans. You can download it for free here. Grant's book is also currently available in several eBook formats:PDF format from Lulu.comMobipocket formatKindle format from ... and you can inspect an HTML version of the Table of contents here... We're currently arranging for hard copies of the book to be printed. We'll let you know where you can get them, as soon as they are available. Every day, out in the various discussion boards devoted to Microsoft SQL Server, the same types of questions come up again and again: Why is this query running slow? Execution plans can tell you how a query will be executed, or how a query was executed.

The aim of this chapter is to enable you to capture actual and estimated execution plans, in either graphical, text or XML for­mat, and to understand the basics of how to interpret them. Query Parsing Query Execution. Connector/J Developer Guide :: 5.7 Using Master/Slave Replication with ReplicationConnection. Divided We Stand: The SQL of Relational Division. Businesses often require reports that require more than the classic set operators. Surprisingly, a business requirement can often be expressed neatly in terms of the DIVISION relationship operator: How can this be done with SQL Server?

Joe Celko opens up the 'Manga Guide to Databases', meets the Database Fairy, and is inspired to explain DIVISION. I’ve just got a copy of THE MANGA GUIDE TO DATABASES (ISBN 978-1-59327-190-9); it is one of a series of “Manga Guides” (the others are Calculus and Statistics). Since I consider myself a long time comic book fan, rather than a Dummy or an Idiot, I prefer these titles over their competition on the book shelf. The book has a section on basic RDBMS in which they mention Codd’s eight original operations on tables. But the one in the collection that seems weird on first glance is relational division.

The name “relational division” comes from the symbol for a Cartesian product (aka CROSS JOIN), which is X or multiplication. Division with a Remainder. Java - How to load lazy fetched items from Hibernate/JPA in my controller. Java Persistence/ElementCollection. JPA 2.0 defines an ElementCollection mapping. It is meant to handle several non-standard relationship mappings. An ElementCollection can be used to define a one-to-many relationship to an Embeddable object, or a Basic value (such as a collection of Strings). An ElementCollection can also be used in combination with a Map to define relationships where the key can be any type of object, and the value is an Embeddable object or a Basic value. In JPA an ElementCollection relationship is defined through the @ElementCollection annotation or the <element-collection> element. The ElementCollection values are always stored in a separate table.

The table is defined through the @CollectionTable annotation or the <collection-table> element. The CollectionTable defines the table's name and @JoinColumn or @JoinColumns if a composite primary key. Embedded Collections[edit] An ElementCollection mapping can be used to define a collection of Embeddable objects. EMPLOYEE (table) PHONE (table) See Also[edit] Versioning & Optimistic Locking in Hibernate - Intertech Blog. By Jim White (Directory of Training and Instructor) A few weeks ago while teaching Hibernate, a student (thanks Dan) asked me about whether version numbers can be generated by the database. The answer is – Yes, in some cases. I thought the question and an expanded discussion of Hibernate’s versioning property would be a good topic for this week’s blog entry. The <version> property (or @Version annotation) For those of you that use Hibernate today, you are probably aware that Hibernate can provide optimistic locking through a version property on your persistent objects.

To specify a version for your persistent object, simply add a version (or timestamp) property in your mapping file and add a version attribute to your persistent class. For those using annotations, just mark the version property’s getter in the class with the @Version annotation. @Version public long getVersion() { return version; } Hibernate: /* update com.intertech.domain.Product */ update Product set version=? SQL Server Index Basics. Given the fundamental importance of indexes in databases, it always comes as a surprise how often the proper design of indexes is neglected.

It often turns out that the programmer understands detail, but not the broad picture of what indexes do. Bob Sheldon comes to the rescue with a simple guide that serves either to remind or educate us all! One of the most important routes to high performance in a SQL Server database is the index. Indexes speed up the querying process by providing swift access to rows in the data tables, similarly to the way a book’s index helps you find information quickly within that book. In this article, I provide an overview of SQL Server indexes and explain how they’re defined within a database and how they can make the querying process faster.

Index Structures Indexes are created on columns in tables or views. You can create indexes on most columns in a table or a view. Figure 1: B-tree structure of a SQL Server index Clustered Indexes Nonclustered Indexes Queries. Converting a delimited string of values into columns. I have seen a few questions asking how to transform a delimited values into columns, so I thought I would talk about it here. In most cases it is recommended to use a string parser function to split the string; however, today I want to talk about another method. This method takes advantage of the XML data type that was introduced in SQL Server 2005. What is nice about the XML data type is it preserves the document order. The document order is critical because it guarantees the string is kept in the same order when it is converted to XML. Let’s start by creating a sample table with a few rows of data.

DECLARE @t TABLE( ProductId INT, ProductName VARCHAR(25), SupplierId INT, Descr VARCHAR(50) INSERT INTO @t VALUES (1,'Product1',1,'A1,10in,30in,2lbs'); INSERT INTO @t VALUES (2,'Product2',2,'T6,15in,30in,'); INSERT INTO @t VALUES (3,'Product3',1,'A2,1in,,0.5lbs'); Okay now we have our sample data, let’s talk about our data. ;WITH cte (ProductId, ProductName,SupplierId,Prod_Attributes) [ProductId], Visual Representation of SQL Joins. Introduction This is just a simple article visually explaining SQL JOINs. Background I'm a pretty visual person. Things seem to make more sense as a picture. I looked all over the Internet for a good graphical representation of SQL JOINs, but I couldn't find any to my liking. Using the code I am going to discuss seven different ways you can return data from two relational tables.

For the sake of this article, I'll refer to 5, 6, and 7 as LEFT EXCLUDING JOIN, RIGHT EXCLUDING JOIN, and OUTER EXCLUDING JOIN, respectively. Inner JOIN This is the simplest, most understood Join and is the most common. Hide Copy Code SELECT <select_list> FROM Table_A A INNER JOIN Table_B B ON A.Key = B.Key Left JOIN This query will return all of the records in the left table (table A) regardless if any of those records have a match in the right table (table B). SELECT <select_list>FROM Table_A A LEFT JOIN Table_B B ON A.Key = B.Key Right JOIN SELECT <select_list>FROM Table_A A RIGHT JOIN Table_B B ON A.Key = B.Key. Star schema. The star schema gets its name from the physical model's[2] resemblance to a star with a fact table at its center and the dimension tables surrounding it representing the star's points.

Model[edit] The star schema separates business process data into facts, which hold the measurable, quantitative data about a business, and dimensions which are descriptive attributes related to fact data. Examples of fact data include sales price, sale quantity, and time, distance, speed, and weight measurements. Related dimension attribute examples include product models, product colors, product sizes, geographic locations, and salesperson names. A star schema that has many dimensions is sometimes called a centipede schema.[3] Having dimensions of only a few attributes, while simpler to maintain, results in queries with many table joins and makes the star schema less easy to use.

Fact tables[edit] Fact tables record measurements or metrics for a specific event. Dimension tables[edit] Benefits[edit] Optimizing Data Warehouse Query Performance Through Bitmap Filtering. Most data warehouse queries are designed to follow a star schema and can process hundreds of millions of rows in a single query. By default, the query optimizer detects queries against star schemas and creates efficient query plans for them. One method the optimizer can use to generate an efficient plan is to use bitmap filtering.

A bitmap filter uses a compact representation of a set of values from a table in one part of the operator tree to filter rows from a second table in another part of the tree. Essentially, the filter performs a semi-join reduction; that is, only the rows in the second table that qualify for the join to the first table are processed. In SQL Server 2008, bitmap filtering can be introduced in the query plan after optimization, as in SQL Server 2005, or introduced dynamically by the query optimizer during query plan generation. Optimized bitmap filtering is available only on the Enterprise, Developer, and Evaluation editions of SQL Server. Example.