Reputation: 841
"order by" in query is taking to much time in MySQL. SHOW PROFILES shows that the time is taken by the sorting process. Is there any setting/workaround that will decrease the sorting time ?
Upvotes: 4
Views: 9298
Reputation: 68
you may need to indexing the column on which you want to run order by . you can run the sql
'ALTER TABLE
yourTableNameADD INDEX
ColumnName (
ColumnName);
'
i had the same problem, and overcame by this procedure.
Upvotes: 0
Reputation: 35087
The reason the query is running slowly might be that the table is not indexed; if that is the case, create a suitable index.
Upvotes: 0
Reputation: 32336
Can you let me know the output of the following 2 commands: show create table tbl_name explain "your select query"
MySQL will not use index if it thinks that almost all the rows needs to be examined unless there is a covering index. Since only one index per table is used, try to order by the column that is part of that index if it being used at all.
Upvotes: 0
Reputation: 11460
ALTER TABLE `tablename` ADD INDEX `indexname` (`columnname`);
Generally, indexname is the same as columnname.
Upvotes: 1
Reputation: 24140
If you don't have an index on the field that you're ordering by, add one:
"In some cases, MySQL can use an index to satisfy an ORDER BY clause without doing any extra sorting."
Edit: (From the section on ORDER BY optimization in the MySQL documentation.)
Upvotes: 8
Reputation: 993303
You may be able to increase the speed of returning sorted results by adding an index on the column(s) that you want your results ordered by.
Upvotes: 1
Reputation: 171814
Adding appropriate indexes for the fields you're ordering by should do the trick.
Upvotes: 5