我有一个包含 150 万行、39 列的表,包含大约 2 年的销售数据,并且每天都在增长。在我们将其移动到新服务器之前我没有遇到任何问题,我们现在的内存可能更少。
目前查询需要很长时间。有人建议对导致大多数性能问题的大表进行分区,但我有几个问题。
分区执行时间是否较长?我担心由于性能缓慢,中途会发生一些事情,我会丢失数据。
我应该把它分成几年还是几个月?(我们通常会查看一个月内的数字,但有时我们会花几周或几年的时间)。我还应该对列进行分区吗?(我们有一些很少或从不使用的列,但我们稍后可能想使用它们)
只是有一个简单的问题.我想我知道答案,但我希望不是.
我希望能够回显一个我不知道是否设置的变量.所以我想要一个默认变量,如果它没有设置,我不想检查它是否先设置.
所以这是一个例子:
我有一个$变量,我不知道是否设置.
然后
echo "This is my number: " . $variable;
Run Code Online (Sandbox Code Playgroud)
如果$ variable设置为5,我希望它打印"这是我的号码:5",如果没有设置,我希望它打印"这是我的号码:0".
我知道我可以这样做:
echo "This is my number: " . ($variable? : 0);
Run Code Online (Sandbox Code Playgroud)
但后来我仍然注意到$ variable是未定义的,即使echo正确显示.
我也可以这样做
if (!isset($variable))
{
$variable = 0);
}
echo "This is my number: " . $variable;
Run Code Online (Sandbox Code Playgroud)
但是,如果我这么做的话,那就是代码太多了.
我希望能够在MySQL数据库中选择两个日期之间的所有日期,其中日期是varchar,格式为dd.mm.yyyy.
Database
date (varchar) | value
------------------------
31.01.2018 | 123
------------------------
28.02.2018 | 456
Run Code Online (Sandbox Code Playgroud)
这不起作用
Query
SELECT date,value from Database WHERE date BETWEEN '2018-01-01' AND '2018-01-31'
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用WHERE date LIKE '%.01.2018'整整几个月,但这还不够.
我可以在PHP中执行此操作,但不想这样做,因为这将花费太长时间.我想我可以使用这个CAST功能,但不知道如何.
在MySQL中执行此操作的最佳方法是什么?