Markus Winand
banner
winand.at
Markus Winand
@winand.at
SQL Renaissance Ambassador. Author, Trainer, Coach. PhD in Common Sense. Creator of http://use-the-index-luke.com and http://modern-sql.com.
My favorite change is that MariaDB got an improved implementation of the WHERE year(...) = ? rewriting. use-the-index-luke.com/blog/2024-12...

In picture: the green check mark used to be yellow, with the "a" footnote: Unconditionally rewritten — even if only a matching function-based index exists
September 5, 2025 at 9:31 AM
I wish I was running my business in a garage. I'd have more space there.

Related: New mugs arrived: use-the-index-luke.com/shop#mugplus...
April 23, 2025 at 11:43 AM
I think the reason for that is the legal dispute that caused the SEQUEL→SQL renaming. The reunion paper (pic) doesn't say it explicitly, but I'd guess that the removing the vowels trick requires a different pronunciation too (but that is just my interpretation).

www.mcjones.org/System_R/SQL...
December 18, 2024 at 7:43 AM
The article just says how it is typically pronounced — but doesn't say what is correct.

I, for myself, refer to the standard itself. Part 1 has a clear answer (picture).
December 18, 2024 at 7:43 AM
Big Data was yesterday. Today we've got Colossal Data!

www.commitstrip.com/en/2014/06/0...

Just because the comic is old doesn't mean it's wrong.
December 11, 2024 at 7:49 AM
TIL: MySQL's TIMESTAMP doesn't even provide the full 32bit epoch as it starts one second after 1970-01-01 00:00:00Z.

dev.mysql.com/doc/refman/9...
December 5, 2024 at 1:58 PM
(1) It’s slow; (2) is gives you wrong results. What else do you need?

The main problem is that the number of rows you have seen in the past cannot be used to find the spot where you stopped over the last time. Since then, new rows might have arrived.
December 3, 2024 at 11:30 AM
JSON support in SQL is not about storing JSON documents¹.

While storing JSON in SQL tables is possible and sometimes quite useful, the true power of JSON in SQL comes from the ability to *process* JSON within SQL.
November 29, 2024 at 10:22 AM
Just scheduled the first round of trainings 2025.

Now also offering a US shift (9am pacific).

Also pimped my concurrency training. Read more at my website:

winand.at/newsletter/2...
November 28, 2024 at 2:21 PM
For those of you who like stickers.

I'll ship mine to you—totally free. Coasters will also be in the package.

use-the-index-luke.com/shop
November 13, 2024 at 11:27 AM
SQL's data types CHAR and VARCHAR are about characters. Sounds like a no-brainer, doesn't it?

Well, a consequence is that the number in the parenthesis refer to characters, not bytes.

Unfortunately, some SQL engines don't get that right—causing major confusion among users.
November 13, 2024 at 9:52 AM
SQL's FILTER clause should be easy to implement for every engine. Why is it still not supported widely?

Sure it can be emulated easily—and ugly. The value on readability (and learning) is huge.

Please vendors: Just get it done.

modern-sql.com/feature/filter
November 8, 2024 at 9:55 AM
For this WHERE, what index to create?

WHERE subsidiary_id = 42
AND last_name LIKE '%INA%'

Is (subsidiary_id) enough or should it be (subsidiary_id, last_name)?

A decade ago I prepared an animation for that.

use-the-index-luke.com/sql/clusteri...
October 25, 2024 at 9:01 PM
😱
October 25, 2024 at 12:27 PM
Sneak peek. First here on Blue Sky — the others have to wait (probably some month).

Can you guess about which SQL-Feature this chart is about?
March 1, 2024 at 1:51 PM
Last orders please!

The next "SQL Reloaded" training has some seats left. The training covers a lot what you already know, but much deeper than you every thought about it.

Online, as a series of six two-hour units.

Starting Jan 9th.
More info: winand.at/sql-training...
December 19, 2023 at 9:44 AM
On the way to pgconf.eu.

Also: I hope to win the ”most outdated profile picture“ competition.
December 12, 2023 at 7:47 AM