En realidad se encontró con
este "bicho" que me tenía un poco asustado de juguetear con la columna de la influenza aviar.
Im que busca en esta mesa las relaciones, la columna de la izquierda es un VARCHAR (64), derecho y orden de las columnas son columnas INT. Siendo realistas, es probable que pueda cortar la columna a la izquierda a 24 años.
Creo que en mi peor de los casos un INSERT-SELECT para generar nuevos valores order_id tendría 30 MB de memoria para almacenar los resultados de SELECT. Y que si había 1M + filas. Id tener un tiempo difícil realista ya más de 100K filas en esta operación, que tendría más cerca de 3MB. Esta es una copia de la operación final, su no va a ser algo que sucede a menudo.
Cuando veo cosas como una opción que no ha grandpare categorías de adoptar los elementos de las categorías eliminados automáticamente, simplemente bajando las filas existentes e insertar filas fresco empieza a parecer una idea demasiado malos como ser la recopilación de la cat_ids en trozos.
Heres las tres consultas Im mirando, no pre-grandpare-adopción.
$c->categories = default_for_in(array(), 'categories', $_POST);
$c->new_category = default_for_in('', 'new_category', $_POST, imasks::category_id);
if(default_for_in(false, 'submit', $_POST))
{
$c->sql_in = '';
foreach($c->categories as &$c->category)
{
if(preg_match(imasks::category_id, $c->category))
{
$c->sql_in .= ",'{$c->category}'";
}
}
if($c->sql_in)
{
$c->sql_in = substr($c->sql_in, 1);
if($c->new_category)
{
$c->sql = '
INSERT IGNORE INTO ' . CAT_WP_RELATIONS_TABLE . ' (cat_id, item_id)
SELECT "' . $db->real_escape_string($c->new_category) . '", item_id
FROM ' . CAT_WP_RELATIONS_TABLE . "
WHERE cat_id IN({$c->sql_in})";
if($db->query($c->sql))
{
$page->messages .= new message('Added New Category/Item Relations', 'success');
}
else
{
$page->messages .= new message($db->error, 'error');
}
}
$c->sql = 'DELETE FROM ' . CAT_WP_RELATIONS_TABLE . " WHERE cat_id IN({$c->sql_in})";
if($db->query($c->sql))
{
$page->messages .= new message('Deleted Old Category/Item Relations', 'success');
$c->sql = 'DELETE FROM ' . CATEGORIES_TABLE . " WHERE id IN({$c->sql_in})";
if($db->query($c->sql))
{
$page->messages .= new message('Deleted Categories', 'success');
}
else
{
$page->messages .= new message($db->error, 'error');
}
}
else
{
$page->messages .= new message($db->error, 'error');
}
unset($c->sql, $c->sql_in);
}
else
{
$page->messages .= new message('No Categories Selected');
}
}
- $c->categories = default_for_in(array(), 'categories', $_POST);
- $c->new_category = default_for_in('', 'new_category', $_POST, imasks::category_id);
-
- if(default_for_in(false, 'submit', $_POST))
- {
- $c->sql_in = '';
- foreach($c->categories as &$c->category)
- {
- if(preg_match(imasks::category_id, $c->category))
- {
- $c->sql_in .= ",'{$c->category}'";
- }
- }
- if($c->sql_in)
- {
- $c->sql_in = substr($c->sql_in, 1);
- if($c->new_category)
- {
- $c->sql = '
- INSERT IGNORE INTO ' . CAT_WP_RELATIONS_TABLE . ' (cat_id, item_id)
- SELECT "' . $db->real_escape_string($c->new_category) . '", item_id
- FROM ' . CAT_WP_RELATIONS_TABLE . "
- WHERE cat_id IN({$c->sql_in})";
- if($db->query($c->sql))
- {
- $page->messages .= new message('Added New Category/Item Relations', 'success');
- }
- else
- {
- $page->messages .= new message($db->error, 'error');
- }
- }
-
- $c->sql = 'DELETE FROM ' . CAT_WP_RELATIONS_TABLE . " WHERE cat_id IN({$c->sql_in})";
- if($db->query($c->sql))
- {
- $page->messages .= new message('Deleted Old Category/Item Relations', 'success');
- $c->sql = 'DELETE FROM ' . CATEGORIES_TABLE . " WHERE id IN({$c->sql_in})";
- if($db->query($c->sql))
- {
- $page->messages .= new message('Deleted Categories', 'success');
- }
- else
- {
- $page->messages .= new message($db->error, 'error');
- }
- }
- else
- {
- $page->messages .= new message($db->error, 'error');
- }
- unset($c->sql, $c->sql_in);
- }
- else
- {
- $page->messages .= new message('No Categories Selected');
- }
- }
Strong with this one, the sudo is.