由于我在数据库中进行了一些迭代插入,我遇到了一些性能问题。
这是一个预订网站,每个客户可以通过时间跨度为每年的每一天设定单位价格。
目前,我在PHP中从start_date循环到end_date并相应地设置价格,但是很长一段时间它需要很长时间才能完成。
由于每个时期的价格是相同的,我想知道MySQL是否有办法在不通过带有多个插入的繁重PHP循环的情况下做到这一点,而是用一个查询代替。
CREATE table disponibility (
dispo_id INT PRIMARY KEY,
dispo_full_date varchar(10),
dispo_day varchar(2),
dispo_month varchar(2),
dispo_year varchar(4),
dispo_price INT
)
所以用户从date_from和date_to设置价格,我需要以下格式的数据:
dispo_full_date =>日期格式为dd / mm / yyyy dispo_day =>日期格式为dd的日期 dispo_month =>格式为mm的日期, dispo_year =>从yyyy格式开始的那一年, dispo_price =>价格,只是一个INT
有没有办法只用SQL做到这一点?特别是因为一个月的天数每个月都不同,甚至取决于2月份的年份......
答案 0 :(得分:0)
将您的表格更改为DATETIME dispo_start_date
和DATETIME dispo_end_date
,然后使用SELECT BETWEEN
。
不要每天都存储并使用DATE
(TIME
)字段(带索引)。
这应该更快。