-- Which are essentially a repeat of of another query in the list?
-- Which are just stupid?
-- Which will take a long time?
-- Which could be made much faster with a suitable change to the query?
-- Which could be made much faster with a suitable change to the Lasair system?
...
– Now reduced to 18 queries by removing what seem to be repeats.
– Removed ORDER BY from all queries. In a realtime pipeline the order is always time.
– Added LIMIT 10 where necessary, to all queries for the purposes of timing.
– Many queries have pointless joins with the candidates table that can be done without (see below).
– Those that have “real” joins with the candidates I have approximated as object queries. A good example is looking for lightcurves that have detections in a specific narrow time interval.
– Number 4 is asking for lightcurves of 47 objects, which is more suitable for jupyter/API interface
– Should we simply make subqueries impossible, as it is so easy to abuse?
1-- query on objects
SELECT objectId,ncandFROM objectsWHERE ncand > 20AND (latestgmag-maggmean)>2 LIMIT 10Executed in 0.01 seconds
2-- specific object
SELECT objects.ncand, objects.ramean, objects.decmean, objects.jdmin, objects.maggmean,candidates.magpsf ,candidates.fidFROM candidates, objectsWHERE objects.objectId = candidates.objectIdAND candidates.objectId ="ZTF17aabdaaq"Executed in 0.03 seconds
3-- specific object
SELECT *FROM objects objectIdWHERE objectId="ZTF18acmzpbf"Executed in 0.00 seconds
54-- triple join with list of objectIds
SELECT objects.objectId, candidates.jd - 2400000.5 AS ago, candidates.magpsf, candidates.sigmapsf, candidates.fidFROM candidates, objects, sherlock_classificationsWHERE objects.objectId = candidates.objectIdAND objects.primaryId = sherlock_classifications.transient_object_idAND objects.objectId in ('ZTF18aavqmxr', 'ZTF18aaiugdp', 'ZTF18aaxddex', 'ZTF18aawcbyu', 'ZTF18aavlgby', 'ZTF18aavfhlv', 'ZTF18aainceg', 'ZTF18aaveejk', 'ZTF18aauesbd', 'ZTF18aavelyy', 'ZTF18aavqlnk', 'ZTF18aavefdz', 'ZTF18aasnjav', 'ZTF18aaxjkcm', 'ZTF18aaudxvh', 'ZTF18aauqlxd', 'ZTF18aaxnbfs', 'ZTF18aaxpkty', 'ZTF18aaxumvv', 'ZTF18aaxvbtx', 'ZTF17aadsntf', 'ZTF18aayeepw', 'ZTF18aavghok', 'ZTF18aayotqj', 'ZTF18aaywedv', 'ZTF18aaymybb', 'ZTF18aazmegj', 'ZTF17aabumwe', 'ZTF18aazvjuy', 'ZTF18aazwddf', 'ZTF17aabupib', 'ZTF18aazwdak', 'ZTF17aaapvpp', 'ZTF17aaarqox', 'ZTF18abbmbys', 'ZTF18abcbqxj', 'ZTF18abcbvxc', 'ZTF18abckoxz', 'ZTF18abctttf', 'ZTF18abehhbp', 'ZTF17aabuxdi', 'ZTF18abjhbss', 'ZTF18abjlwzq', 'ZTF18absrlhv', 'ZTF18abbmenz', 'ZTF18acbwaxk', 'ZTF19aaqtpet')Wants the light curves of all these objects. Takes more than 5 minutes. Is not using any information from the Sherlock table even though it is joined in. How about a lightcurve fetch in Jupyter:
objects = ['ZTF18aavqmxr', 'ZTF18aaiugdp', 'ZTF18aaxddex', 'ZTF18aawcbyu', 'ZTF18aavlgby', 'ZTF18aavfhlv', 'ZTF18aainceg', 'ZTF18aaveejk', 'ZTF18aauesbd', 'ZTF18aavelyy', 'ZTF18aavqlnk', 'ZTF18aavefdz', 'ZTF18aasnjav', 'ZTF18aaxjkcm', 'ZTF18aaudxvh', 'ZTF18aauqlxd', 'ZTF18aaxnbfs', 'ZTF18aaxpkty', 'ZTF18aaxumvv', 'ZTF18aaxvbtx', 'ZTF17aadsntf', 'ZTF18aayeepw', 'ZTF18aavghok', 'ZTF18aayotqj', 'ZTF18aaywedv', 'ZTF18aaymybb', 'ZTF18aazmegj', 'ZTF17aabumwe', 'ZTF18aazvjuy', 'ZTF18aazwddf', 'ZTF17aabupib', 'ZTF18aazwdak', 'ZTF17aaapvpp', 'ZTF17aaarqox', 'ZTF18abbmbys', 'ZTF18abcbqxj', 'ZTF18abcbvxc', 'ZTF18abckoxz', 'ZTF18abctttf', 'ZTF18abehhbp', 'ZTF17aabuxdi', 'ZTF18abjhbss', 'ZTF18abjlwzq', 'ZTF18absrlhv', 'ZTF18abbmenz', 'ZTF18acbwaxk', 'ZTF19aaqtpet']for all object in objects: print(lightcurve(object))
65-- objects AND sherlock
SELECT objects.objectId, objects.ramean, objects.decmean, objects.jdmin - 2400000.5 AS mjdmin, objects.jdmax - 2400000.5 AS mjdmax, objects.magrmin, latestrmag, sherlock_classifications.classificationFROM objects, sherlock_classificationsWHERE objects.primaryId = sherlock_classifications.transient_object_idAND objects.objectid='ZTF19abhpvfq'executed in 0.03 seconds
76-- query on candidates with specific position and time
SELECT candid, mjd, ra, decl, magpsf, fidFROM candidates cWHERE c.ra BETWEEN 191.8212890625 AND 199.9951171875AND c.decl BETWEEN -27.826574830853872AND -13.82353192939064AND c.jd BETWEEN 2458581.5 AND 2458588.5AND c.drb >= 0.75executed in 72 seconds, empty set
This alternate objects query gets the empty set in 16 seconds:
SELECT objectId, ramean, decmeanFROM objectsWHERE objects.ramean BETWEEN 191.8212890625 AND 199.9951171875AND objects.decmean BETWEEN -27.826574830853872 AND -13.82353192939064AND objects.jdmin < 2458581.5 AND objects.jdmax > 2458588.5AND objects.ncandgp > 2
Empty set (15.91 sec)
107-- candidates and objects joined
SELECT DISTINCT o.objectIdFROM objects o, candidates cWHERE o.sherlock_classification IN ('NT')AND o.jdmin > JDNOW() - 100AND o.jdmin < JDNOW() - 0AND o.ncand > 3AND c.objectId = o.objectIdAND (c.jd > JDNOW() - 100AND c.jd < JDNOW() - 0)AND c.magpsf < 20 AND c.drb >= 0.75 LIMIT 10Takes more than 5 minutes. How about this instead which is 4 seconds
SELECT o.objectId FROM objects o WHERE o.sherlock_classification IN ('NT')AND o.jdmin > JDNOW() - 100 AND o.jdmin < JDNOW() - 0AND o.ncandgp > 3AND (o.maggmin < 20 OR o.maggmin < 20) LIMIT 10
118-- object sand objects and candidates joined
SELECT objects.objectId, comments.contentFROM objects, commentsWHERE objects.objectId = comments.objectIdAND comments.content LIKE '% iPTF16geu%'Empty set in 0.05 seconds. Because the comments from Lasair Bot are TNS object names not PTF object names.
139-- distinct objects AND candidates join
SELECT DISTINCT o.objectId, o.ramean, o.decmean, o.jdmin - 2400000.5 AS mjdmin, o.jdmax - 2400000.5 AS mjdmax, o.magrmin, latestrmag, sherlock_classification,IF(c.distpsnr1 < 2 AND c.sgscore1 > 0.49, 'Within 2arcsec of PS1 star', 'Not Near PS1 star') scoreFROM objects o, candidates cWHERE o.sherlock_classification NOT IN ( 'AGN', 'BS')AND o.jdmin > JDNOW() - 4AND o.ncand > 3 AND c.objectId = o.objectId AND (c.jd > JDNOW() - 4) AND c.magpsf < 20 AND c.drb >= 0.75executed in 7 seconds
1510-- TNS AND objects
SELECT objectId,latestrmag, latestgmag,jdnow()-jdmax as delta, contentFROM objects NATURAL JOIN commentsWHERE content LIKE '%TNS%'AND jdmin > JDNOW() - 30 AND jdmin < JDNOW() - 0AND (jdmin-jdmax>1 or jdmin-jdmax<-1)AND ncand > 2AND (maggmin>latestgmag-0.3 OR magrmin>latestrmag-0.3)AND (latestgmag<17.2 or latestrmag<17.2)AND DECMEAN>-10AND (sherlock_classification='SN'or sherlock_classification='ORPHAN')executed in 0.5 seconds
1611-- TNS AND objects
SELECT objects.objectId, objects.latestrmag, objects.latestgmag, objects.jdmax - jdnow() AS delta, objects.sherlock_classification, comments.contentFROM objects, commentsWHERE objects.objectId = comments.objectId AND comments.content LIKE '%TNS%' LIMIT 10executed in 0.0 seconds
1812-- subquery
SELECT * FROM objectsWHERE ncand >= 5 AND objectId in(SELECT objectId FROM candidates WHERE drb >= 0.75 AND sgscore1 < 0.4 AND jdstarthist > 2458563.7)Takes a long time because of the massive subquery! Burns up temp storgae on database node!
This query does the same and runs in 2.4 seconds:
SELECT * FROM objectsWHERE objects.ncandgp >= 5 AND objects.sgscore1 < 0.4 and objects.jdmin > 2458563.7LIMIT 10
2013-- subquery
SELECT distinct objectId, ramean, decmean, mjdmin, mjdmax, magrmin, latestrmag, sherlock_classification, ncandFROM(SELECT o.objectId, c.jd as mjd, c.fid, c.magpsf, o.jdmin as mjdmin, jdmax as mjdmax,o.maggmin, o.maggmax, o.magrmin, o.magrmax, o.latestrmag, o.sherlock_classification,o.ramean, o.decmean, o.ncand FROM objects o NATURAL JOIN candidates cWHERE c.magpsf < 21AND c.jd > JDNOW() - 20AND o.jdmin > JDNOW() - 20AND o.jdmax > JDNOW() - 3AND o.ncand >= 3AND abs(glatmean) > 10.0AND o.sherlock_classification != 'VS'AND o.sherlock_classification != 'AGN'AND o.sherlock_classification != 'CV'AND o.sherlock_classification != 'BS'AND o.sherlock_classification != 'NT'AND c.rb >= 0.4 AND c.nbad = 0 AND c.fwhm <= 5 AND c.elong <= 1.2 AND abs(c.magdiff) <= 0.2 AND c.isdiffpos = 't'AND c.distnr > 5 ) temp ORDER BY ncand asc, mjdmax desc, mjdmin desc, magrmin desc21-- subquery
SELECT distinct objectId, ramean, decmean, mjdmin, mjdmax, magrmin, latestrmag, sherlock_classification, ncand,separationArcsecFROM(SELECT o.objectId, c.jd as mjd, c.fid, c.magpsf, o.jdmin as mjdmin, jdmax as mjdmax,o.maggmin, o.maggmax, o.magrmin, o.magrmax, o.latestrmag, o.sherlock_classification,o.ramean, o.decmean, o.ncand, sc.separationArcsec FROM sherlock_crossmatches scJOIN objects o ON sc.transient_object_id = o.primaryid NATURAL JOIN candidates cWHERE c.magpsf < 21AND c.jd > JDNOW() - 20AND o.jdmin > JDNOW() - 20AND o.jdmax > JDNOW() - 5AND o.ncand >= 2AND o.sherlock_classification NOT IN ('VS' , 'AGN', 'CV', 'BS','NT')AND c.rb >= 0.4 AND c.nbad = 0 AND c.fwhm <= 5 AND c.elong <= 1.2 AND abs(c.magdiff) <= 0.AND c.isdiffpos = 't'AND (sc.rank = 1 OR sc.rank=2)AND sc.catalogue_object_type = 'galaxy'AND o.sherlock_classification = 'SN'AND sc.separationArcsec > 0.5AND sc.separationArcsec < 100 ) tempFROM WHERE mjdmax desc, separationArcsec desc, ncand asc, mjdmin desc, magrmin desc22-- triple join
SELECT objects.objectIdFROM objects,candidates,sherlock_classificationsWHERE objects.objectId = candidates.objectIdAND objects.primaryId = sherlock_classifications.transient_object_idAND sherlock_classifications.classification IN ("NT")AND objects.ncand > 3AND candidates.objectId = objects.objectIdAND candidates.magpsf < 20AND candidates.rb >= 0.75AND candidates.nbad = 0AND candidates.isdiffpos = "t"AND candidates.fwhm <= 5AND ABS(candidates.magdiff) <= 0.1AND candidates.elong <= 1.2AND objects.jdmin > JDNOW() - 30AND candidates.jd > JDNOW() - 3023-- triple join
SELECT objects.objectId, candidates.jd - 2400000.5 AS ago, candidates.magpsf, candidates.sigmapsf, candidates.fidFROM candidates, objects, sherlock_classificationsWHERE objects.objectId = candidates.objectIdAND objects.primaryId = sherlock_classifications.transient_object_idAND objects.objectId = candidates.objectIdAND objects.primaryId = sherlock_classifications.transient_object_idAND sherlock_classifications.classification NOT IN ("VS" , "AGN", "CV", "BS")AND objects.jdmin > JDNOW() - 250AND objects.ncand > 100AND candidates.objectId = objects.objectIdAND (candidates.jd > JDNOW() - 100)AND candidates.magpsf < 20AND candidates.drb >= 0.75AND candidates.isdiffpos = "t" ORDER BY jdmin ASC24-- triple join
FROM objects,candidates,sherlock_classificationsWHERE objects.objectId = candidates.objectIdAND objects.primaryId = sherlock_classifications.transient_object_idAND objects.jdmax > JDNOW() - 5.00000AND candidates.jd > JDNOW() - 5.00000AND sherlock_classifications.classification NOT IN ("VS" , "AGN", "CV", "BS")AND objects.jdmin > JDNOW() - 14AND objects.ncand > 3AND candidates.objectId = objects.objectIdAND (candidates.jd > JDNOW() - 14)AND candidates.magpsf < 20AND candidates.drb >= 0.75AND candidates.isdiffpos = "t" GROUP BY objects.objectId ORDER BY score , mjdmin DESC25-- triple join
SELECT objects.objectId, jdnow()-jdmax as delta, comments.contentFROM objects, comments, sherlock_classificationsWHERE objects.objectId = comments.objectIdAND objects.primaryId = sherlock_classifications.transient_object_idAND objects.jdmin>jdnow()-30AND objects.jdmin<jdnow()-0AND (objects.jdmin-objects.jdmax>0.1 or objects.jdmin-objects.jdmax<-0.1)AND ncand>2AND ncand<20AND (maggmin>latestgmag-0.5 or magrmin>latestrmag-0.5)AND (latestgmag<17.3 or latestrmag<17.3)AND comments.content LIKE '%TNS%'AND comments.content LIKE '%AT20%'AND decmean>-20AND sherlock_classifications.classification NOT IN ("VS" , "AGN", "CV", "BS", "NT") order by delta26-- triple join
SELECT objects.objectId, latestgmag, latestrmag, jdnow()-jdmax as delta, comments.content, sherlock_classifications.classificationFROM objects, comments, sherlock_classificationsWHERE objects.objectId = comments.objectIdAND objects.primaryId = sherlock_classifications.transient_object_idAND objects.jdmin>jdnow()-30AND objects.jdmin<jdnow()-0AND (objects.jdmin-objects.jdmax>0.5 or objects.jdmin-objects.jdmax<-0.5)AND ncand>2AND ncand<20AND (maggmax-maggmin>1.0 or magrmax-magrmin>1.0)AND (latestgmag < maggmin+0.1AND latestgmag > maggmin-0.1 )AND (latestrmag < magrmin+0.1AND latestrmag > magrmin-0.1)AND (latestgmag<19.9 or latestrmag<19.9)AND comments.content LIKE '%TNS%'AND comments.content LIKE '%SN20%'AND decmean>-10AND sherlock_classifications.classification NOT IN ("xxx") order by delta27-- distinct triple join
SELECT DISTINCT o.objectId, o.ramean, o.decmean, o.jdmin - 2400000.5 AS mjdmin, o.jdmax - 2400000.5 AS mjdmax, o.magrmin, latestrmag, sherlock_classification, IF(distpsnr1 < 2AND c.sgscore1 > 0.49, 'Within 2arcsec of PS1 star', 'Not Near PS1 star') scoreFROM objects,candidates,sherlock_classificationsWHERE objects.objectId = candidates.objectIdAND objects.primaryId = sherlock_classifications.transient_object_idAND o.sherlock_classification NOT IN ('VS' , 'AGN', 'CV', 'BS')AND o.jdmin > JDNOW() - 5AND o.ncand > 3AND c.objectId = o.objectIdAND (c.jd > JDNOW() - 5)AND c.magpsf < 22AND c.rb >= 0.65AND c.nbad = 0AND c.fwhm <= 5AND ABS(c.magdiff) <= 0.1AND c.elong <= 1.2 ORDER BY score , mjdmin DESC28-- quadruple join
SELECT distinct objects.objectId, ramean, decmean, jdmin-2400000.5 AS mjdmin, jdmax-2400000.5 AS mjdmax, magrmin, latestrmag, sherlock_classifications.classification, ncand, (sherlock_crossmatches.distance*1000)TAN((sherlock_crossmatches.separationArcsec/3600)(PI()/180)) as sepFROM candidates, objects, sherlock_classifications, sherlock_crossmatchesWHERE objects.objectId = candidates.objectIdAND objects.primaryId = sherlock_classifications.transient_object_idAND objects.primaryId = sherlock_crossmatches.transient_object_idAND objects.jdmax > JDNOW() - 15.00000AND candidates.jd > JDNOW() - 15.00000AND candidates.magpsf < 21.5AND objects.ncand >= 2AND objects.ncand < 5AND objects.latestgmag - objects.latestrmag <0.2AND sherlock_classifications.classification NOT IN ("VS" , "AGN", "CV", "BS")AND candidates.rb >= 0.6AND candidates.nbad = 0AND candidates.fwhm <= 5AND candidates.elong <= 1.2AND abs(candidates.magdiff) <= 0.2AND objects.latestgmag - candidates.sgmag1 < 0.5AND candidates.isdiffpos = "t"AND (sherlock_crossmatches.rank = 1)AND sherlock_crossmatches.catalogue_object_type = "galaxy"AND sherlock_classifications.classification = "SN"29-- quadruple join
SELECT objects.objectId, objects.ramean, objects.decmean, objects.jdmin - 2400000.5 AS mjdmin, objects.jdmax - 2400000.5 AS mjdmax, objects.magrmin, latestrmag, sherlock_classifications.classification, IF(objects.distpsnr1 < 2AND objects.sgscore1 > 0.49, "Within 2arcsec of PS1 star", "Not Near PS1 star") scoreFROM candidates, objects, comments, sherlock_classificationsWHERE objects.objectId = candidates.objectIdAND objects.objectId = comments.objectId<= 1.2 AND abs(c.magdiff) <= 0.2 AND c.isdiffpos = 't'AND c.distnr > 5 ) temp ORDER BY ncand asc, mjdmax desc, mjdmin desc, magrmin descEven the subquery takes more than 5 minutes.
I wonder about the
distnrcondition,distnris “distance to nearest source in reference image PSF-catalog within 30 arcsec [pixels]”How about this instead which takes 24 seconds:
SELECT o.objectId, o.jdmin as mjdmin, jdmax as mjdmax,o.maggmin, o.maggmax, o.magrmin, o.magrmax, o.latestrmag, o.sherlock_classification,o.ramean, o.decmean, o.ncand FROM objects oWHERE (o.maggmin < 21 OR o.magrmin < 21)AND o.jdmin > JDNOW() - 20 AND o.jdmax > JDNOW() - 3AND o.ncandgp >= 3 AND abs(o.glatmean) > 10.0AND o.sherlock_classification != 'VS'AND o.sherlock_classification != 'AGN'AND o.sherlock_classification != 'CV'AND o.sherlock_classification != 'BS'AND o.sherlock_classification != 'NT'LIMIT 10
14-- subquery
SELECT distinct objectId, ramean, decmean, mjdmin, mjdmax, magrmin, latestrmag, sherlock_classification, ncand,separationArcsecFROM(SELECT o.objectId, c.jd as mjd, c.fid, c.magpsf, o.jdmin as mjdmin, jdmax as mjdmax,o.maggmin, o.maggmax, o.magrmin, o.magrmax, o.latestrmag, o.sherlock_classification,o.ramean, o.decmean, o.ncand, sc.separationArcsec FROM sherlock_crossmatches scJOIN objects o ON sc.transient_object_id = o.primaryid NATURAL JOIN candidates cWHERE c.magpsf < 21AND c.jd > JDNOW() - 20AND o.jdmin > JDNOW() - 20AND o.jdmax > JDNOW() - 5AND o.ncand >= 2AND o.sherlock_classification NOT IN ('VS' , 'AGN', 'CV', 'BS','NT')AND c.rb >= 0.4 AND c.nbad = 0 AND c.fwhm <= 5 AND c.elong <= 1.2 AND abs(c.magdiff) <= 0.AND c.isdiffpos = 't'AND (sc.rank = 1 OR sc.rank=2)AND sc.catalogue_object_type = 'galaxy'AND o.sherlock_classification = 'SN'AND sc.separationArcsec > 0.5AND sc.separationArcsec < 100 ) tempWhy does this need to be in a subquery??
How about this one that takes 10 seconds:
SELECT o.objectId, o.jdmin as mjdmin, o.jdmax as mjdmax, o.maggmin, o.maggmax, o.magrmin, o.magrmax, o.latestrmag, o.sherlock_classification, o.ramean, o.decmean, o.ncand, sc.separationArcsecFROM sherlock_crossmatches sc JOIN objects o ON sc.transient_object_id = o.primaryidWHERE (o.maggmin < 21 OR o.magrmin < 21) AND o.jdmin > JDNOW() - 20 AND o.jdmax > JDNOW() - 5 AND o.ncandgp >= 2AND o.sherlock_classification NOT IN ('VS' , 'AGN', 'CV', 'BS','NT')AND (sc.rank = 1 OR sc.rank=2) AND sc.catalogue_object_type = 'galaxy'AND o.sherlock_classification = 'SN' AND sc.separationArcsec > 0.5 AND sc.separationArcsec < 100 LIMIT 10
15-- triple join
SELECT objects.objectId, jdnow()-jdmax as delta, comments.contentFROM objects, comments, sherlock_classificationsWHERE objects.objectId = comments.objectId AND objects.primaryId = sherlock_classifications.transient_object_idAND sherlock_classifications.classification NOT IN ("VS" , "AGN", "CV", "BS")AND objects.jdmin > JDNOW() - 14AND objects.ncand > 3AND magrmin<16.5AND comments.content LIKE '%TNS%'and candidates.objectId = objects.objectIdAND (candidates.jd > JDNOW() - 14)AND candidates.magpsf < 20AND candidates.drb >= 0.75AND candidates.isdiffpos = "t" ORDER BY score , mjdmin DESC30objects.jdmin>jdnow()-30 AND objects.jdmin<jdnow()-0AND (objects.jdmin-objects.jdmax>0.1 or objects.jdmin-objects.jdmax<-0.1)AND ncand>2 AND ncand<20 AND (maggmin>latestgmag-0.5 or magrmin>latestrmag-0.5) AND (latestgmag<17.3 or latestrmag<17.3)AND comments.content LIKE '%TNS%' AND comments.content LIKE '%AT20%'AND decmean>-20AND sherlock_classifications.classification NOT IN ("VS" , "AGN", "CV", "BS", "NT")Executes in 1.6 seconds
16-- quadruple join
SELECT distinct objects.objectId, objects. ramean, objects. decmean, objects. jdmin-2400000.5 AS mjdmin, objects. jdmax-2400000.5 AS mjdmax, objects. magrmin, latestrmag, sherlock_classifications.classification, ncand,(sherlock_crossmatches.z,candidates.jd - 2400000.5 AS date, IF(objects.distpsnr1 < 2AND objects.sgscore1 > 0.49, "Within 2arcsec of PS1 star", "Not Near PS1 star") score, candidates.rb,candidates.drb,candidates.distnrFROM objects,candidates.distance*1000)TAN((sherlock_crossmatches.separationArcsec/3600)(PI()/180)) as sepFROM candidates, objects, sherlock_classifications, sherlock_crossmatchesWHERE objects.objectId = candidates.objectIdAND objects.primaryId = sherlock_classifications.transient_object_idAND objects.primaryId = sherlock_crossmatches.transient_object_ididAND objects.jdmax > JDNOW() - 15.00000AND candidates.jd > JDNOW() - 15.00000AND candidates.magpsf < 21.5AND objects.jdmax > JDNOW() - 5.00000AND candidates.jd > JDNOW() - 5.00000ncand >= 2 AND objects.ncand < 5AND objects.latestgmag - objects.latestrmag < 0.2AND sherlock_classifications.classification NOT IN ("VS" , "AGN", "CV", "BS")AND objectscandidates.jdmin > JDNOW() - 5AND objects.ncand > 3AND candidates.objectId = objects.objectIdAND (candidates.jd > JDNOW() - 5)AND candidates.magpsf < 20drb >= 0.6AND objects.latestgmag - candidates.sgmag1 < 0.5AND candidates.drb >= 0.75AND candidates.isdiffpos = "t" GROUP BY objects.objectId ORDER BY score , mjdmin DESC31-- quadruple joinSELECT isdiffpos = "t"AND (sherlock_crossmatches.rank = 1)AND sherlock_crossmatches.catalogue_object_type = "galaxy"AND sherlock_classifications.classification = "SN"Executes in 43 seconds
This version avoids the join with the candidates table and takes only 0.7 seconds:
SELECT distinct objects.objectId, ramean, decmean, jdmin-2400000.5 AS mjdmin, jdmax-2400000.5 AS mjdmax, magrmin, latestrmag, sherlock_classifications.classification, ncand,(sherlock_crossmatches.
distance*1000)TAN((sherlock_crossmatches.separationArcsec/3600)(PI()/180)) as sepFROM
objects, sherlock_classifications, sherlock_crossmatchesWHERE objects.
primaryId =
sherlock_classifications.transient_object_idAND objects.primaryId = sherlock_
crossmatches.transient_object_idAND objects.jdmax > JDNOW() - 15.00000AND (objects.maggmin < 21 OR objects.magrmin < 21)AND objects.
ncandgp >= 2 AND objects.
ncand < 5AND
AND candidates.magpsf < 21objects.latestgmag - objects.latestrmag < 0.2AND sherlock_classifications.classification NOT IN ("VS" , "AGN", "CV
AND candidates.drb >= 0.75AND candidates.isdiffpos = "t"AND candidates.isdiffpos = "t"", "BS")AND objects.latestgmag - objects.sgmag1 < 0.5AND (sherlock_crossmatches.rank = 1
)AND sherlock_crossmatches.
catalogue_object_type = "galaxy"AND sherlock_
AND sherlock_classifications.classification = "SN"AND (sherlock_crossmatches.distance1000)TAN((sherlock_crossmatches.separationArcsec/3600)(PI()/180)) > 20AND (sherlock_crossmatches.distance*1000)TAN((sherlock_crossmatches.separationArcsec/3600)(PI()/180)) < 125AND sherlock_crossmatches.z <=0.05 GROUP BY objects.objectId, sherlock_crossmatches.rank32-- watchlist using sqlSELECT jd,ra,declFROM candidatesWHERE candidates.jd > JDNOW() - 10.00000
AND ( ((ra BETWEEN 190.44 AND 198.67) AND (dec BETWEEN -78.32 AND -76.49classifications.classification = "SN"
17-- watchlist using sql
SELECT jd,ra,decl FROM candidatesWHERE candidates.jd > JDNOW() - 10.00000AND ( ((ra BETWEEN 190.44 AND 198.67) AND (decl BETWEEN -78.32 AND -76.49))OR ((ra BETWEEN 241.49 AND 243.95) AND (decl BETWEEN -40.41 AND -36.83))OR ((ra BETWEEN 239.60 AND 241.14) AND (decl BETWEEN -43.12 AND -40.71))OR ((ra BETWEEN 233.92 AND 237.04) AND (decl BETWEEN -35.91 AND -32.10))OR ((ra BETWEEN 190 AND 244 ) AND (decl BETWEEN -79 AND -32))OR ((ra BETWEEN 250.49 AND 251.90) AND (decl BETWEEN -22.89 AND -20.24))OR ((ra BETWEEN 241244.49 63 AND 243251.9585) AND (dec decl BETWEEN -40.41 2614 AND -3622.8309))OR ((ra BETWEEN 239.60 AND 241.14244 AND 252 ) AND (dec decl BETWEEN -43.12 27 AND -40.7120))OR ((ra BETWEEN 23382.92 99 AND 23786.0421 ) AND (dec decl BETWEEN -3510.91 22 AND -324.1057))OR ((ra BETWEEN 190 AND 244 85.06 AND 87.16 ) AND (dec decl BETWEEN -79 AND -322.66 AND 0.93))OR ((ra BETWEEN 250.49 AND 251.9082 AND 88 ) AND (dec decl BETWEEN -22.89 AND -20.2411 AND 1))OR ((ra BETWEEN 24450.63 66 AND 25157.8526 ) AND (dec BETWEEN -2614 AND -22.09decl BETWEEN 29.62 AND 33.16))OR ((ra BETWEEN 244 AND 252 276.80 AND 277.84) AND (dec decl BETWEEN -27 AND -200.55 AND 1.86))OR ((ra BETWEEN 8261.99 85 AND 86.21 ) AND (dec BETWEEN -10.22 AND -4.57))OR ((ra BETWEEN 85.06 AND 87.16 ) AND (dec BETWEEN -2.66 AND 0.93))OR ((ra BETWEEN 82 AND 88 ) AND (dec BETWEEN -11 AND 1))OR ((ra BETWEEN 50.66 AND 57.26 ) AND (dec BETWEEN 29.62 AND 33.16))OR ((ra BETWEEN 276.80 AND 277.84) AND (dec BETWEEN -0.55 AND 1.86))OR ((ra BETWEEN 61.85 AND 73.27 ) AND (dec BETWEEN 21.00 AND 30.02)))33-- noncandidates73.27 ) AND (decl BETWEEN 21.00 AND 30.02)))Executes in 14 seconds
18-- noncandidates
SELECT objects.objectId, objects.ramean, objects.decmean, objects.jdmin - 2400000.5 AS mjdmin, objects.jdmax - 2400000.5 AS mjdmax, objects.magrmin, latestrmag, sherlock_classifications.classification,IF(candidates.distpsnr1 < 2 AND candidates.sgscore1 > 0.49, "Within 2 arcsec of PS1 star", "Not Near PS1 star") scoreFROM candidates, noncandidates, objects, sherlock_classificationsWHERE objects.objectId = candidates.objectIdAND objects.objectId = noncandidates.objectIdAND objects.primaryId = sherlock_classifications.transient_object_idTakes many minutes and does not finish … does not actually need either candidates or noncandidates table, this executes in 0.0 seconds:
SELECT objects.objectId, objects.ramean, objects.decmean, objects.jdmin - 2400000.5 AS mjdmin, objects.jdmax - 2400000.5 AS mjdmax, objects.magrmin, latestrmag, sherlock_classifications.classification,IF(objects.distpsnr1 < 2 AND candidatesobjects.sgscore1 > 0.49, "Within 2arcsec 2 arcsec of PS1 star", "Not Near PS1 star") scoreFROM candidates, noncandidates, objects, sherlock_classificationsWHERE objects.objectId = candidates.objectIdAND objects.objectId = noncandidates.objectIdAND objects.primaryId = sherlock_classifications.transient_object_idLIMIT 10