mysql - 在多个 varchar 列上优化 LEFT JOINS ORDER BY

标签 mysql performance sql-order-by left-join

我尝试优化对多个 varchar 列进行排序的 MySQL 查询:

SELECT *
FROM tickets
LEFT OUTER JOIN customers ON customers.id = tickets.customer_id
LEFT OUTER JOIN locations ON locations.id = tickets.location_id
ORDER BY customers.name, locations.name;

对于包含约 6000 张门票、约 40 个客户和约 400 个位置的小型数据库,ORDER BY 语句似乎花费了大量时间(约 100 毫秒)。

我已经减少了 varchar 列的长度,这显着加快了查询速度(快了 2 倍)。

你们有优化查询执行时间的解决方案吗?

非常感谢!

最佳答案

您应该在 customers.namelocations.name 列上建立索引。

此外,请确保 customers.idtickets.customer_idlocations.idtickets.location_id > 均已编入索引。

关于mysql - 在多个 varchar 列上优化 LEFT JOINS ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3641895/

相关文章:

php - 低内存下的Mysql性能

mysql - 如何在 Doctrine2 中对 FROM 语句执行子查询

MySQL:跨多个线程的事务

sql - 外部查询 OrderBy 不依赖于内部查询的结果集

hibernate - 通过 with select 对 hibernate 查询进行排序

c# - ReplicationManager 在打开连接时引发异常

Xcode 7.3 在一个类中打字非常慢

java - Kafka 消费者配置/性能问题

java - JPanel 上的paintComponent() 性能不佳

php - ORDER BY 破坏 mysql 查询