我有一张订单表,其中包含超过 2 亿条记录。对于统计,我需要获得三个不同的计数。首先是特定日期范围内的订单数量,然后是特定状态下的订单数量,最后是特定日期范围内来自指定状态的订单数量。前两个查询平均返回 10-2000 万条记录,通常需要不到 5 秒。但是,我无法在一个小时内让第三个查询返回结果。以下是实际查询:
SELECT COUNT(*)
FROM orders
WHERE order_date BETWEEN date1 AND date2;
Run Code Online (Sandbox Code Playgroud)
上面有 1000 万条记录要汇总,查询需要 4 秒。
SELECT COUNT(*)
FROM orders
LEFT JOIN customers ON orders.customer_id = customers.customer_id
WHERE customer.state = 'PA';
Run Code Online (Sandbox Code Playgroud)
上面有 1500 万条记录要汇总,查询需要 5 秒。
(SELECT COUNT(*)
FROM orders
WHERE order_date BETWEEN date1 AND date2)
UNION
(SELECT COUNT(*)
FROM orders
LEFT JOIN customers ON orders.customer_id=customers.customer_id
WHERE customer.state = 'PA');
Run Code Online (Sandbox Code Playgroud)
上面有4500条记录要汇总,查询需要2个小时。
对于第三个查询,我是否可以采用另一种方法来让我在更合理的时间内进行计数?最好不到一分钟?
我有一个 PHP 类文件,它通过 Web 服务器和 cron 进程用作包含文件。我正在寻找一种方法,将一些代码添加到脚本的头部,以便我可以检测脚本是否直接从命令行启动,而不是包含在另一个脚本中。这样,我可以通过直接调用脚本并让函数实例化对象并在其上执行一些代码来使测试变得更容易,而无需为其创建包装器脚本。
我尝试使用if (php_sapi_name() == 'cli') {,但即使该脚本包含在从命令行调用的另一个脚本中,该测试也是正确的。
我正在开发一个解析广告的PHP脚本,我想添加一个正则表达式来查找特殊代码,这些代码可以是任意长度的单词,但是包含任何顺序或任意长度的字母和数字.我只是不确定适当的语法是什么.我发现模式允许字母或数字,或需要特定的字母和数字模式,但不是几乎随机的混合.
任何建议将不胜感激.
样品:购买小部件20%折扣,使用优惠码WID2010 by Friday
理想情况下,我想要检测单词"WID010"并使用它来标记该项目以供其他用途.但是,这种格式不一定一致.所有可以预测的代码总是由至少一个字母和一个数字组成,没有空格或标点符号.
我正在运行 LAMP 服务器,这个 .htaccess 给了我一个 500 错误。这样做是过滤关键字并重定向到相应的域名。
Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} xy|yz|xz
RewriteRule ^xyz.com
RewriteCond %{HTTP_HOST} ab|bc|ac
RewriteRule ^abc.net
<IfModule>
Run Code Online (Sandbox Code Playgroud)
来自 error.log 的错误消息
/var/www/conf/.htaccess: <IfModule> directive requires additional arguments, referer: http://localhost/conf/rewrite.php
Run Code Online (Sandbox Code Playgroud)
为什么它给我500错误,我是否必须检查是否安装了IfModule,或者必须安装。
谢谢让
我正在向商店添加一行,如下所示:
var store = this.getStore();
var newrow = store.add(Sytem.model.Info.Settings.create({ID: id, MINVAL: 1});
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在新添加的行中设置值时:
newrow.set('MAXVAL', 1000);
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息 newrow.set() is not a function
据我所知,这是在新创建的商店行上设置值的正确方法.