Skip to content
Snippets Groups Projects
Commit bd4e7242 authored by Andy Yates's avatar Andy Yates
Browse files

Found another delete using IN rather than joins.

This is more of a SQL provider independent way of doing the deletes
but MySQL’s IN subselect statement performance is less than fantastic.
We need to avoid these like the plague.
parent d81c0f9f
No related branches found
No related tags found
No related merge requests found
......@@ -414,11 +414,22 @@ sub remove {
assert_ref($allele_group, 'Bio::EnsEMBL::AltAlleleGroup', 'allele_group');
my $helper = $self->dbc()->sql_helper();
my $delete_attribs_sql = q{
my $delete_attribs_sql;
if ($self->dbc->driver() eq 'mysql') {
$delete_attribs_sql = q{
DELETE aaa
FROM alt_allele_attrib aaa
JOIN alt_allele aa using (alt_allele_id)
where alt_allele_group_id =?
};
}
else {
$delete_attribs_sql = q{
DELETE FROM alt_allele_attrib WHERE alt_allele_id IN (
SELECT alt_allele_id FROM alt_allele WHERE alt_allele_group_id = ?
)
};
};
}
my $delete_alt_alleles_sql = 'DELETE FROM alt_allele where alt_allele_group_id =?';
my $delete_group_sql = 'DELETE from alt_allele_group where alt_allele_group_id =?';
my $params = [[$allele_group->dbID, SQL_INTEGER]];
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment