mysql - 应为此 MySQL 查询创建哪些索引

标签 mysql sql ruby-on-rails query-optimization database-indexes

如果我有以下查询,可以创建哪些索引来加快速度?

SELECT `residentials`.* 
FROM `residentials` 
WHERE 
  (is_active = 1) AND 
  (
    (created_at > '2012-02-20 20:51:56' OR modified > '2012-02-20 20:51:56') AND 
    list_price >= 229000 AND 
    list_price <= 311000 AND 
    square_feet >= '1223' AND 
    square_feet <= '1654' AND 
    property_type IN ('commercial','condo','detached','house','multi','rowtownhouse','semidetached') AND
    (zip LIKE '%19147%')
  )
ORDER BY list_price DESC

仅供引用,此查询是由 Rails 生成的,因此我无法完全控制它的构造方式。

使用 EXPLAIN 会产生以下结果:

id=1

select_type = 简单

表格=住宅

类型=范围

可能的键=index_residentials_on_list_price、index_residentials_on_property_style、index_residentials_on_square_feet、index_residentials_on_modified、index_residentials_on_is_active、index_residentials_on_is_active_and_board_id、index_residentials_is_active_board_id_list_price_property_type、index_residentials_ on_is_active_and_created_at_and_modified、dates_and_type、dates_type_price、board_price_type_zip、board_price_type_zip_mls

键=index_residentials_on_list_price

key_len = 6

引用=空

行数 = 209272

额外 = 使用位置

最佳答案

你尝试过吗:

EXPLAIN SELECT `residentials`.* 
FROM `residentials` 
WHERE 
  (is_active = 1) AND 
  (
    (created_at > '2012-02-20 20:51:56' OR 
     modified > '2012-02-20 20:51:56') AND 
     list_price >= 229000 AND 
     list_price <= 311000 AND 
     square_feet >= '1223' AND 
     square_feet <= '1654' AND 
     property_type IN ('commercial','condo','detached','house','multi','rowtownhouse','semidetached') AND
     (zip LIKE '%19147%')
  )
ORDER BY list_price DESC

关于mysql - 应为此 MySQL 查询创建哪些索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9620843/

相关文章:

php - 参数号无效 : parameter was not defined in {path}

Mysql 按 7 天间隔选择查询组

c# - BigQuery : How to enable standard SQL in C#

ruby-on-rails - 下载和压缩使用 CarrierWave 上传到 S3 的文件

mysql - Spring MVC + ComboPooledDataSource( hibernate )

mysql - sql min 函数和其他列

mysql - 如果一年内没有发生销售,则缺少行

sql - R 向量转化为字符串

ruby-on-rails - 类似于共享点但内置在 Rails 上的 ruby ?

ruby-on-rails - 重置密码时跳过Devise模型中某些成员的验证