假设我想执行此查询:
(SELECT a FROM t1 WHERE a=10 AND B=1)
UNION ALL
(SELECT a FROM t2 WHERE a=11 AND B=2)
UNION ALL
(SELECT a FROM t3 WHERE a=12 AND B=3)
ORDER BY a LIMIT 1000;
Run Code Online (Sandbox Code Playgroud)
如果"t1"中有550个结果,"t2"中有450个结果,那么MySQL是否足够智能以跳过"t3"?
我在看MySQL文档(http://dev.mysql.com/doc/refman/5.1/en/union.html)但似乎无法找到答案.
有没有办法将新数据库添加到复制而无需重新启动主服务器?我似乎无法找到方法,我希望将停机时间降至最低.
顺便说一下,我尝试用它来加速重启.在我的主人身上降低接近0的值需要永远,加上它会给机器增加很多负担.
我正在使用MySQL 5.5.20.
我的问题与PHP Memcache扩展的addServer函数中的"weight"参数有关.
在过去的几个月里,我一直在为所有服务器使用"weight = 1".我现在正在尝试应用以下配置,最终从旋转中删除"10.10.10.3"并最大限度地减少数据丢失.
使用新的权重值后,我的PHP客户端无法检索以前能够获取的密钥的值.如果我恢复为"weight = 1",则可以毫无问题地获取所有密钥.
是否有配置或我遗漏的任何东西,以便正确使用"重量"选项与"Memcache :: addServer"?
谢谢您的帮助.
$hosts = array(
array('ip' => '10.10.10.1', 'port' => 11211, 'weight' => 100),
array('ip' => '10.10.10.2', 'port' => 11211, 'weight' => 100),
array('ip' => '10.10.10.3', 'port' => 11211, 'weight' => 1),
array('ip' => '10.10.10.4', 'port' => 11211, 'weight' => 100),
);
$memcache = new Memcache();
foreach($hosts as $host) {
$host['port'] = isset($host['port']) ? (int) $host['port'] : 11211;
$host['weight'] = isset($host['weight']) ? (int) $host['weight'] : 1;
$memcache->addserver($host['ip'], $host['port'], false, $host['weight'], …Run Code Online (Sandbox Code Playgroud)