What is the order of sql execution?

The execution sequence of SQL statements
MySQL statements are divided into 11 steps in total, as marked in the figure below, first The FROM operation is always executed, and the LIMIT operation is executed last. Each operation will generate a virtual table, which is used as an input for processing. However, these virtual tables are transparent to the user, but only the last virtual table will be returned as a result. If a clause is not specified in the statement, the corresponding step will be skipped.

Let’s analyze each stage of query processing in detail
FORM: For the table on the left and the table on the right of FROM Table calculates Cartesian product. Generate virtual table VT1
ON: Perform ON filtering on virtual table VT1, and only those rows that meet the
JOIN: If OUTER JOIN (such as left join, right join) is specified, the unmatched rows in the retained table will be added to the virtual table VT2 as external rows, resulting in a virtual table VT3, rug from sub- If the sentence contains more than two tables, then steps 1 to 3 will be repeated for the result VT3 generated by the previous join connection and the next table until all tables are processed
WHERE: Perform WHERE condition filtering on virtual table VT3. Only records that meet the
GROUP BY: Group the records in VT4 according to the columns in the group by clause to generate VT5.
CUBE | ROLLUP: Perform cube or rollup operations on table VT5 to generate Table VT6.
HAVING: Apply having filter to virtual table VT6. Only records that meet the
SELECT: Perform a select operation, select the specified column, and insert it into virtual table VT8.
DISTINCT: Deduplicate records in VT8. Generate virtual table VT9.
ORDER BY: Sort the records in virtual table VT9 according to
LIMIT: Take out the records of the specified row and generate Virtual table VT11, and returns the result.
Writing order: select... from... where.... group by... having... order by... limit [offset,]
(rows)
Execution order: from... where...group by... having.... select... order by... limit
The above is the detailed content of What is the order of sql execution?. For more information, please follow other related articles on the PHP Chinese website!
Hot AI Tools
Undress AI Tool
Undress images for free
Undresser.AI Undress
AI-powered app for creating realistic nude photos
AI Clothes Remover
Online AI tool for removing clothes from photos.
Clothoff.io
AI clothes remover
Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!
Hot Article
Hot Tools
Notepad++7.3.1
Easy-to-use and free code editor
SublimeText3 Chinese version
Chinese version, very easy to use
Zend Studio 13.0.1
Powerful PHP integrated development environment
Dreamweaver CS6
Visual web development tools
SublimeText3 Mac version
God-level code editing software (SublimeText3)
What are the BLOB and CLOB data types in SQL?
Aug 07, 2025 pm 04:22 PM
BLOBstoresbinarydatalikeimages,audio,orPDFsasrawbyteswithoutcharacterencoding,whileCLOBstoreslargetextsuchasarticlesorJSONusingcharacterencodinglikeUTF-8andsupportsstringoperations;2.Bothcanhandleuptogigabytesofdatadependingonthedatabase,butperforman
How does the EXISTS operator compare to the IN operator in SQL?
Aug 05, 2025 pm 01:08 PM
UseEXISTSforexistencechecks,especiallywithlargeorcorrelatedsubqueriesandwhenNULLvaluesarepresent,asitstopsatthefirstmatchandhandlesNULLssafely;useINformembershipchecksagainstsmall,known,ornon-nullvaluesetswherereadabilitymattersandperformanceisnotcri
How do you grant and revoke permissions in SQL?
Aug 04, 2025 am 09:19 AM
GRANTandREVOKEstatementsareusedtomanageuserpermissionsinSQL.1.GRANTprovidesprivilegeslikeSELECT,INSERT,UPDATE,DELETE,ALTER,EXECUTE,orALLPRIVILEGESondatabaseobjectstousersorroles.2.SyntaxforgrantingisGRANTprivilege_typeONobject_nameTOuser_or_role,allo
Optimizing SQL ORDER BY for Query Performance
Aug 04, 2025 am 11:19 AM
To optimize the performance of ORDERBY in SQL, you must first understand its execution mechanism and make rational use of index and query structure. When the sorting field has no index, the database will trigger "filesort", consuming a lot of resources; therefore, direct sorting of large tables should be avoided and the amount of sorted data should be reduced through WHERE conditions. Secondly, establishing a matching index for sorting fields can greatly speed up queries, such as creating reverse order indexes in MySQL 8.0 to improve efficiency. In addition, deep paging (such as LIMIT1000, 10) should be used instead with index-based cursor paging (such as WHEREid>12345) to skip invalid scans. Finally, combining caching, asynchronous aggregation and other means can also further optimize the sorting performance in large data set scenarios.
Understanding SQL Execution Context and Permissions
Aug 16, 2025 am 08:57 AM
SQL execution context refers to the identity or role when running SQL statements, which determine which resources and operation permissions can be accessed. Permission setting should follow the principle of minimum permissions, and common permissions include SELECT, INSERT, EXECUTE, etc. To troubleshoot permission issues, you need to confirm the login name, role permissions, EXECUTEAS settings and schema authorization. Performing context switching can be implemented through EXECUTEAS, but attention should be paid to user existence, permission granting and performance security impact. It is recommended to avoid arbitrarily assigning db_owner or sysadmin roles. The application account should only access necessary objects and be authorized through schema.
How to get the first and last day of the year in SQL?
Aug 11, 2025 pm 05:42 PM
ThefirstdayoftheyearisobtainedbyconstructingortruncatingtoJanuary1stofthegivenyear,andthelastdayisDecember31stofthesameyear,withmethodsvaryingbydatabasesystem;2.Fordynamiccurrentyeardates,MySQLusesDATE_FORMATorMAKEDATE,PostgreSQLusesDATE_TRUNCorDATE_
How to find the sum of a column in SQL?
Aug 08, 2025 pm 05:54 PM
TofindthesumofacolumninSQL,usetheSUM()function,whichreturnsthetotalofallnumericvaluesinaspecifiedcolumnwhileignoringNULLs;1.Usebasicsyntax:SELECTSUM(column_name)ASaliasFROMtable_name;2.Ensurethecolumnhasnumericdatatoavoiderrors;3.ApplyWHEREtofilterro
How to join a table to itself in SQL
Aug 16, 2025 am 09:37 AM
Aself-joinisusedtocomparerowswithinthesametable,suchasinhierarchicaldatalikeemployee-managerrelationships,bytreatingthetableastwoseparateinstancesusingaliases,asdemonstratedwhenlistingemployeesalongsidetheirmanagers'nameswithaLEFTJOINtoincludetop-lev


