Subscribe to Windows IT Pro

 

Get Newsletters

  • Get the Latest News
  • Product Updates
  • Helpful Tricks
  • Productivity Tips

Subscribe Now!

February 15, 2005 12:00 AM

T-SQL Checklist

13 practices for highly effective T-SQL
SQL Server Pro
InstantDoc ID #45065
Rating: (1)

T-SQL is the core language for server-side data access and manipulation in SQL Server. Applying best practices will help you get the most out of T-SQL. You can use the following checklist to make sure that your T-SQL code is efficient and easy to maintain.

Use set-based solutions. Set-based solutions are usually faster, simpler, and shorter than cursor-based solutions. Set-based solutions let SQL Server's optimizer evaluate multiple execution plans and choose an efficient one instead of forcing a particular approach. Cursors require a lot of overhead, so avoid them whenever possible. Iterative solutions are adequate in a few cases; learn how to identify those situations rather than always considering an iterative solution first.

Write multiple solutions. Don't be satisfied with the first solution that works. Always come up with multiple solutions, compare their performance, simplicity, and scalability, then choose the one that best suits your needs.

Stick to ANSI-compliant code. Use ANSI-compliant code as much as possible. Writing standard code has many advantages. It allows easier porting, not just between database platforms, but also to future versions of SQL Server. Also, the meaning of standard code is clear, unlike some proprietary constructs, such as using *= or =* for outer joins. Consider nonstandard code only where T-SQL uses a proprietary feature that gives significant performance benefits or functionality that has no standard alternative.

Use stored procedures. Use stored procedures instead of implementing all logic in the application. Stored procedures let you share application logic and they provide encapsulation, so you can revise their implementation without affecting the application as long as the procedure's interface remains the same. Stored procedures give you power to control data security and integrity, let you reduce network traffic by avoiding multiple roundtrips between client and server, and let you reuse execution plans.

Specify column names in your query's SELECT list. Always specify an explicit column list; don't use * in the SELECT list of your queries and table expressions (e.g., views, derived tables, inline functions). By specifying just the names of the columns you really need, you let the optimizer consider covering indexes. And you don't need to worry when the schema of the underlying objects change.

Never assume a physical order of the data. A common mistake inexperienced T-SQL programmers make is relying on a certain physical order of the data. Remember that T-SQL is based on the relational model, which in turn is based on set theory. A table (set) has no predetermined order to its rows. When you need data sorted, specify ORDER BY.

Use ORDER BY only if you really need the data sorted. Conversely, if you don't need to return sorted data to the client, don't specify ORDER BY—sorting data has a cost.

Specify filters. Rather than filtering the data at the client, specify a filter in your query to allow the use of indexes and limit the physical data that SQL Server accesses.

Don't use T-SQL for everything. T-SQL was designed mainly for data access and manipulation. Some tasks (e.g., formatting) work better when you perform them at the client.

Use search arguments. Search arguments are logical expressions you can use as filters to let the optimizer consider using indexes. Any manipulation you perform on a base column that's being filtered prevents the use of an index. Remember that SQL Server might implicitly convert a column because of data-type precedence.

Specify an object owner. Always specify object owners instead of letting SQL Server implicitly resolve them. This practice makes your code more readable and improves performance. You save a step in the resolution phase, and you prevent SQL Server from needing to grab special internal locks to resolve the object owner.

Use a semicolon (;) to suffix T-SQL statements. The use of a semicolon is ANSI-compliant and is mandatory with other database platforms. Although it's not mandatory in SQL Server 2000, some statements in SQL Server 2005 will require the semicolon, so start getting used to it now.

Get involved in SQL Server communities. People often ask me how to improve their T-SQL programming abilities in addition to reading books and articles. The best way I know is getting involved in the SQL Server communities (newsgroups, user groups, and so on). For T-SQL–related topics, I mainly recommend the public SQL Server programming newsgroup (news://msnews.microsoft.com/microsoft.public.sqlserver.programming).

Related Content:

ARTICLE TOOLS

Comments
  • dnguyen27
    7 years ago
    Feb 25, 2005

    Useful and valuable tips.

You must log on before posting a comment.

Are you a new visitor? Register Here

advertisement

advertisement

White Papers

Get your Windows 7 deployment off to the right start by implementing PC lockdown. A locked-down environment is easier and cheaper to support since users are less likely to make unnecessary changes to the core system configuration - read more here!

Essential Guides

Is your iSCSI "lossy"? The reality is that most off-the-shelf Ethernet hardware deployed for iSCSI can lose packets, resulting in slow performance or application downtime. Learn how to assess your current iSCSI infrastructure and engineer an advanced iSCSI SAN infrastructure.

Web Seminars

What's the best way to keep your network safe from malware? In this web seminar, security expert Greg Shields suggests an alternative method to the traditional blacklisting approach that is common with anti-virus and anti-malware solutions.

eLearning Series

We bring the experts direct to you to share their real-world perspective and expertise. During each event, three sessions stream in real time, so you can learn, ask questions, and get solutions.
Upcoming event: Getting the Most with Exchange 2010 with Paul Robichaux

Subscribe to Windows IT Pro!

Windows is a trademark of the Microsoft group of companies. Windows IT Pro is used by Penton Media Inc. under license from owner.