this post was submitted on 02 May 2025
17 points (87.0% liked)
Programming
21093 readers
88 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities [email protected]
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
"They simply go through the whole table".. that's the problem. A full table scan should be avoided at all costs.
Learn: how to run and read an explain plan, indexes, keys, constraints, and query optimization (broadly you want to locate individual records as quickly as possible by using the most selective criteria).
You also need to learn basic schema design and to familiarize yourself with normalization.
Avoid processing huge result sets in your application. The database is good at answering questions about data it contains. It isn't just a big bucket to throw data into to retrieve later.
What can be more selective than "if ID = "XXX"? Yet the whole table still has to be reviewed until XXX is found?
based on a quick review of normalization, I doubt that this helps me - as we are not experiencing such links in the data. For us we "simply" have many products with certain parameters (title, description, etc.) and based on those we process the product and store the product with additional output in a table. However to not process products which were already processed, we want to dismiss any product which is in the processing pipeline which is already stored in the "final" table.
thats probably the biggest enlightment I have got since we started working with a database.
Anyway I appreciate your input. so thank you for this.
If you are searching by a primary key or other indexed id you should be fine. Here are a couple of articles to check out:
https://www.atlassian.com/data/databases/how-does-indexing-work
https://www.red-gate.com/simple-talk/featured/postgresql-indexes-what-they-are-and-how-they-help/
The TLDR is a where clause that hits an index doesn't have to go through all the rows in the table.