感谢您的阅读。我有一个预订系统,我试图搜索可用性,但查询需要花费大量的时间来运行。有没有人对如何让它更快地运行有任何指示?
java.lang.NoClassDefFoundError
表是2015年至2030年的每个日期的列表。
dates
表是属性的可用日期的日期范围
property_bands
表是所有预订的列表
当我在没有booking_properties
表的情况下运行以下查询时,查询需要0.17秒,但是使用"左连接"这需要54秒。
booking_properties
我正在尝试重写我在2009年写过的查询,该查询一直运行良好但随着客户端平台的增长,系统变得越来越慢。这是原始查询,目前需要14秒才能运行。
SET @start = '2018-05-01' , @end = '2018-05-04';
select * from `dates`
left join `property_bands` on property_bands.propband_start <= dates.day_date
and property_bands.propband_end >= dates.day_date
left join `booking_properties` on booking_properties.property_id = property_bands.property_id
and(
(
booking_properties.bprop_start <= @start
and booking_properties.bprop_end >= @end
)
or(
booking_properties.bprop_start >= @start
and booking_properties.bprop_start < @end
)
or(
booking_properties.bprop_end > @start
and booking_properties.bprop_end <= @end
)
)
and(
booking_properties.bprop_deleted = '0000-00-00 00:00:00'
or booking_properties.bprop_deleted > now()
)
and booking_properties.bprop_void < 1
where
dates.day_date >= @start and dates.day_date < @end