1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-02 22:58:01 +00:00

Add Using Expressions In Indexes as a postgres til

This commit is contained in:
jbranchaud
2016-04-19 22:01:24 -05:00
parent a1568d6dfd
commit 05a5af48be
2 changed files with 33 additions and 1 deletions

View File

@@ -7,7 +7,7 @@ variety of languages and technologies. These are things that don't really
warrant a full blog post. These are mostly things I learn by pairing with
smart people at [Hashrocket](http://hashrocket.com/).
_396 TILs and counting..._
_397 TILs and counting..._
---
@@ -237,6 +237,7 @@ _396 TILs and counting..._
- [Types By Category](postgres/types-by-category.md)
- [Use A psqlrc File For Common Settings](postgres/use-a-psqlrc-file-for-common-settings.md)
- [Use Argument Indexes](postgres/use-argument-indexes.md)
- [Using Expressions In Indexes](postgres/using-expressions-in-indexes.md)
- [Using Intervals To Offset Time](postgres/using-intervals-to-offset-time.md)
- [Who Is The Current User](postgres/who-is-the-current-user.md)
- [Word Count for a Column](postgres/word-count-for-a-column.md)

View File

@@ -0,0 +1,31 @@
# Using Expressions In Indexes
Though we usually see column names by themselves when defining an index, it
is also possible to create an index with an expression.
Let's say I have a `users` table with an `email` column. Then I may end up
creating an index like this
```sql
create index email_idx on users (email);
```
If I always perform queries on the `email` column with the `lower()`
function, like this
```sql
select * from users where lower(email) = lower('some@email.com');
```
then I will want to also create an index with that full expression --
`lower(email)`
I can do this with a statement like the following
```sql
create index lower_email_idx on users (lower(email));
```
Without an index that uses the full `lower(email)` expression, `select`
statements like the one above will be forced to do full sequential scans
instead of indexed scans.