Strategies for understanding complicated SQL SELECT statements [closed] - mysql

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I've been trying to get my head round some very tricky SQL queries in MySQL (can range from nested queries, correlated sub queries, group concatenation, temporary tables and self joins). These are often very large and very complicated.
Recently I've been thinking of ways to try and improve the way I do this. Sometimes I try to think how a single record would be included in a dataset and follow how the keys bring together tables. Other times I think of the entire join table and mentally strip away rows according to the WHERE constraints.
Is it worthwhile looking at relational algebra to understand what is going on?
In summary, what strategies do you use for analysing large, complicated SQL queries?

For me, it was just experience. The more I had to interact with such large, complicated codes and the more questions I asked from professors, friends, coworkers, the better I came at being able to understand everything that is going on in a code.

Related

Most efficient Rails query method [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
I've been looking into a few ways of writing efficient ActiveRecord queries and I thought I might put it out to gather a consensus on who thinks what might be best.
#page = #current_shop.pages.where(state: "home").first
At the moment, I've surmised that find_by_sql might be the best route?
Rails helpfully logs execution time for every query and a query of that form is usually quite simple. It's a dual-condition SELECT with a LIMIT applied.
find_by_sql is reserved for exceptional circumstances, not routine ones. In this case if you went the "raw query" route you might save, at best, a fraction of a millisecond. You'll also get back a raw query result, not a model, which you'll then have to do something with.
This is a classic case of premature optimization. If you have a measurable performance problem, as opposed to a suspected performance problem, then you might want to consider caching to avoid the database call entirely instead of trying to execute it slightly faster.

Best choice structure for MYSQL? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
I am trying to decide on what will be more efficient between two different systems for MySQL to handle my data. I can either,
1: Create around 200 tables, each having around 30 rows & 5 columns.
2: Create 1 table, having around 6000 rows & 5 columns.
I am using Laravel for this project and Eloquent will be handling this. Does anybody have any opinions on this matter? I appreciate any/all responses.
Option 2.
For such low row counts the overhead both in terms of programming effort and computation of joining 200(!) tables far outweighs the "flat file" approach. Additionally, MySQL will attempt to cache the entire 6000-row table in RAM, assuming you're not storing massive BLOBs.

Database Architecture for Countries/Cities/News [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I'm developing an application to post news. Could anyone suggest me a best approach keeping performance and Scalability in view
Approach 1 :
I would like to have Country as a database and cities as a table and post the news to individual table. This way i'm pulling traffic to respective databases/cities
But its very hard to show world news. I need to join multiple databases. I still don't know about the performance here
Approach 2:
Take a Single database and save the news into multiple cities tables. This way i just need to join multiple table for world news. I don't see a difference between approach 1 and approach 2.
Approach 3:
Take single Database and post each news w.r.t country_id and city_id. Have proper indexing for country_id and city_id.
I'm inclined towards approach 3, but if there are 1M records and search becomes too heavy isnt ??
Can anyone suggest me an approach please.
I'm using MySQL Database.
Thanks.
Approach 3 is the only sensible choice. MySQL will handle a million rows without any trouble.
It's pretty simple to build a prototype, stuff 10 million rows of random(ish) data in it, and measure performance. 10 million is not a typo. When it's practical, test with 10 times the data you expect. Learn to use EXPLAIN.
You should be able to build this kind of prototype in less than half an hour. It's a good skill to practice.
One database per country and one table per city are poor substitutes for partitioning.

one database or many to make it more efficient? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
I need to know if it is more or less efficient to have multiple databases with an index of databases relative to each dataset.
I do not know to what extent multicache can adversely affect performance.
Suppose 10 bases in 2GB data each rather than a single 20GB.
For example: the data of userid 293484 are in third database.
Thanks.
Yes, this is a common technique known as sharding.
http://en.wikipedia.org/wiki/Shard_%28database_architecture%29
Altimately the code you will have to write to maintain such a structure will kill you.
Keep it simple, keep it in one database, and use proper design patterns and indexing.
Database engines are design to deal with large amounts of data, so if your hadrware is sufficient, your queries well structured and the design good, you should not have to many performance problems.

MySQL table with 2000 million records how to optimize [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 9 years ago.
Improve this question
For a website having 2000000 users, out of which each user shares thousands of pictures and on each picture there will be thousands of comments, in such scenario there will be more than 2000 million comments, so how can I manage this much of big data using MySql. How can following methods improve performance of my database server
Use of table partationing
Use MySQL clusters
Use MySQL with memcached
Please explain other methods and best practices to handle such big database tables
On top of the mentioned optimization, choosing the right indexes on the right fields is crucial for your query performance, make sure your tables are indexed on everything you group, order or search based on.
Also make sure to check out Chapter 8 of the MySql reference which discusses optimization
What you really should be focusing on is optimizing the structure, queries and indexes before getting into memcached and MySql clusters.
As your database grows you monitor the performance and optimize accordingly.
In this case i dont thinl traditional RDBMS is what you need :) , more like NoSQl is what would serve you best