Innodb 900 000 rows duurt lang

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

specialist hosting engineer en ontwerper PaaS

Wat ga je doen? Slimme applicaties zijn voor de politie hét nieuwe wapen om misdaad te bestrijden. Inmiddels zijn ze onmisbaar geworden in ons werk, dus ga jij ervoor zorgen dat we deze 'wapens' 24 uur per dag tot onze beschikking hebben. In deze rol ben jij dus direct van invloed op het werk van collega's op straat en draag je bij aan de veiligheid binnen onze samenleving. Je beheert de Oracle Weblogic PaaS infrastructuur en levert een bijdrage aan het capaciteits-, configuratie- en wijzigingenmanagement voor de PaaS infrastructuur. Ook draai je mee in projecten die te maken hebben met

Bekijk vacature »

Developer Tools / Knowledge Engineer

Developer Tools / Knowledge Engineer Om aan de toenemende vraag naar onze Tools tegemoet te kunnen blijven komen zijn wij op zoek naar een nieuw collega die mee wil groeien met het team en de ontwikkelingen. Dit ga je doen Je krijgt in eerste instantie het beheer over een aantal bestaande interactieve en statische tools. Dit zijn online hulpmiddelen zoals calculaties, flowcharts, checklists en modeldocumenten. Je beoordeelt en verwerkt de aangeleverde vaktechnische content voor deze tools en toetst deze aan de toegekende eisen. Je kijkt continue hoe je de tools nog verder kunt optimaliseren. Daarnaast bouw je uiteraard nieuwe tools

Bekijk vacature »

Medior ASP.Net Developer Personeel informatiesyste

Medior ASP.Net Developer Personeel informatiesysteem Web Wat ga je doen als Medior ASP.NET Developer? Als Medior ASP.Net Developer uit de omgeving Den Haag, ga jij werken aan een nieuwe personeelsadministratie webapplicatie. Het is een zeer complete HRM-oplossing waarbij flexibiliteit hoog in het vaandel staat. Zo maakt de standaard meegeleverde SDK het mogelijk om ter plekke extra functionaliteit te implementeren zonder tussen komst van programmeurs, verder is het volledig in de Cloud en benaderbaar via een browser of een iOS of Android app. Het huidige pakket is toe aan vernieuwing en zal volledig van scratch herschreven worden in C#, ASP.Net Core

Bekijk vacature »

cybercrime specialist

Wat ga je doen? Als cybercrime specialist faciliteer jij in cybercrime onderzoeken. Dit doe je met (nieuwe) opsporingsmethodieken. Daarbij maak je ook gebruik van de meest innovatieve technieken. Omdat jij beschikt over een aantal specialismen weet je technisch complexe problemen goed te duiden. Jij vertaalt dit in opsporingsmethodieken die op zeer korte termijn inzetbaar zijn. Zo voorzie je je collegaâ..s zo goed mogelijk in hun functionele behoeften en maak je voor hen het opsporen eenvoudiger. Tussentijds ben je scherp om te toetsen of de behoeften binnen je onderzoek niet veranderen. Je neemt actief deel aan het opsporingsproces zoals het verhoren,

Bekijk vacature »

Mobile Developer

Wat je gaat doen: DPA GEOS is op zoek naar enthousiaste Mobile Developers om het team te versterken. Als Mobile Developer werk je in Agile teams bij onze klanten en ben je verantwoordelijk voor hun grotere mobiele web applicaties. Met collega’s ontwikkel je hoogwaardige software voor verschillende opdrachtgevers in jouw regio. Je ontwikkelt, adviseert over architectuur en past de nieuwste technologieën toe. Je bent een ambitieuze professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande interesse in Mobiele applicaties. Je staat met beide benen op de grond en je kunt goed samenwerken. Je bijt

Bekijk vacature »

Als Java developer werken op Goeree Overflakkee

Functieomschrijving Als Java developer kom je te werken in een professioneel en kundig team bestaande uit o.a. meerdere developers, een software tester en consultants. Gezamenlijk werken jullie op de Agile Scrum wijze dagelijks aan het ontwikkelen van nieuwe applicaties alsmede de optimalisatie van bestaande applicaties. Je werkt voornamelijk aan de webkant van de applicaties. Echter wordt er ook gebruik gemaakt van relationele databases. Intern worden er diverse technieken gebruikt zodat hun scoop erg breed is en ze hierdoor zo veel mogelijk klanten kunnen bedienen. Tevens vinden ze het fijn wanneer kandidaten nieuwsgierig en technisch aangelegd zijn; proactief meedenken over verbetervoorstellen

Bekijk vacature »

Java Developer vacature Groningen

Java Developer vacature Noordoost Jij volgt ontwikkelingen op de voet. Sterker nog: je bent er een onderdeel van. Jij loopt voorop. Jij denkt met klanten mee en helpt hen innoveren. Focus op Java Wij bouwen State of the Art applicaties met de nieuwste Java technologie en frameworks. Dit doen we door ons te richten op de open source-oplossingen binnen de wereld van Java, alle nieuwe ontwikkelingen te volgen en onze kennis te delen binnen onze eigen Java Community. Dit betekent bijvoorbeeld dat we aanwezig zijn op veel conferenties; Oracle Code One, Devoxx en JFall. We organiseren ook onze eigen avondsessies

Bekijk vacature »

Oracle Apex Ontwikkelaar

Wat je gaat doen: Als Oracle Ontwikkelaar werk je zowel zelfstandig als in teamverband aan het ontwikkelen en ontwerpen van software componenten. Je levert een bijdrage aan de ontwikkeling tot en met de implementatie. Je bent in staat om informatie te verzamelen,te analyseren en te documenteren van wensen en eisen van de eindgebruikers. Je bent in staat om functionele vereisten te vertalen naar technische specificaties, ontwikkelt web applicaties met behulp van Oracle Applicatie Express, door de veranderingen en ontwikkelingen van web formulieren en rapporten. Verbeteren van bestaande Oracle Apex Systemen. Ontwikkelen en veranderen van Oracle 11g database schema’s. Schrijven van

Bekijk vacature »

.Net front-end Developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Bij DPA werken onze consultants als Front-end Developer in Agile teams bij onze klanten en zijn ze verantwoordelijk voor de grotere webapplicaties. Wil jij dit ook, want we zijn op zoek naar enthousiaste Front-end Developers om ons development team te versterken. Je draagt positief bij aan de teamgeest binnen een projectteam en je ondersteunt de software architect en projectleider bij hun werkzaamheden. Je gaat webapplicaties maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je

Bekijk vacature »

Integratie Specialist (Technisch applicatiebeheerd

Verantwoordelijk zijn voor een aantal diensten waarvan de applicatie niet door het Kadaster zelf is ontwikkeld. Dat doet het Team Uitbestede Diensten. Voor dit team zoeken wij een Integratie Specialist (Technisch applicatiebeheerder) Als collega ben je in staat om zelf te bepalen of een oplossing, los van het feit of het technisch mogelijk is, handig, efficiënt, zinvol of slim is. De werkzaamheden die je uitvoert, doe je als teamlid en zoveel mogelijk on-site. Incidenteel thuiswerken is geen probleem. Gevoel voor technisch architectuur Wij zoeken iemand die incidenten en verzoeken van de gebruikersorganisatie afhandelt. Samen met de externe leveranciers bereid je

Bekijk vacature »

Drupal developer

Drupal developer Ben jij een Drupal developer, op zoek naar een mooie uitdaging bij een organisatie die volop in ontwikkeling is? Zie jij jezelf in de rol van full-stack ontwikkelaar, waar je je onder andere bezig houdt met de puzzel van koppelingen met content systemen en autorisatie modules, en ons scherp houdt op het gebied van generieke oplossingen vs. maatwerk? Steek je graag de handen uit de mouwen om mooie nieuwe features op te leveren? Lees dan verder! Dit ga je doen Je komt te werken in een enthousiast team met twee andere developers (1 back-end en 1 front-end), twee

Bekijk vacature »

.Net front-end Developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Bij DPA werken onze consultants als Front-end Developer in Agile teams bij onze klanten en zijn ze verantwoordelijk voor de grotere webapplicaties. Wil jij dit ook, want we zijn op zoek naar enthousiaste Front-end Developers om ons development team te versterken. Je draagt positief bij aan de teamgeest binnen een projectteam en je ondersteunt de software architect en projectleider bij hun werkzaamheden. Je gaat webapplicaties maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je

Bekijk vacature »

SQL developer voor marketing campagnes

Functieomschrijving Door toenemende vraag vanuit klanten is de organisatie op zoek naar een SQL ontwikkelaar. Je analyseert en verzamelt database informatie (SQL-server) en maakt interfaces en match-ups van deze data. Je werkt met stored procedures, triggers en functions en integreert de data binnen data architectuuromgevingen . Kortom een zeer uitdagende functie voor de techneut. Functie-eisen - Je hebt minimaal HBO werk en denk niveau; - Je hebt minimaal 2 jaar ervaring met stored procedures, triggers en functions; - Uiteraard ben je zeer bekend met SQL-server; - Je hebt bij voorkeur kennis van SOAP webservices en XML; - Je hebt minimaal

Bekijk vacature »

C# .NET webdeveloper gezocht, inhouse, afwisselend

Heb je ervaring als .NET C# webdeveloper en je bent op zoek naar een nieuwe baan in Den Haag? Bij een kleinschalig bedrijf met een korte lijnen en een informele maar ambitieuze sfeer? Waar je met de laatste ontwikkelingen kan werken op zowel back- als frontend? Wellicht dat dit iets voor jou is! Voor een full service webbureau in Den Haag zijn we op zoek naar een ervaren .NET C# webdeveloper. Het bedrijf bestaat uit ongeveer 40 mensen met in totaal circa 10 software developers. Binnen deze organisatie zal je samen met je team meewerken aan het onderhoud en de

Bekijk vacature »

Senior SAP ABAP/Netweaver developer

Wat je gaat doen: Wij zoeken voor de regio Rotterdam een Senior SAP ABAP/Netweaver developer. Is het jouw passie om applicaties te ontwikkelen en ben je specialist op het gebied van SAP Netweaver ontwikkeltools? Ontdek dan hier wat DPA GEOS je kan bieden. Als Senior SAP ABAP/Netweaver developer ben je verantwoordelijk voor de uitvoering van software ontwikkelingsprojecten bij klanten. Afhankelijk van je kennis, ambitie en de opdracht voer je één of meer van de volgende werkzaamheden uit. Je ontwerpt oplossingen, stelt de ontwerpen op, bouwt, test en documenteert nieuwe (soms grote en complexe) programma's op het gebied van SAP. Naast

Bekijk vacature »
Daniel van Seggelen

Daniel van Seggelen

12/02/2018 17:18:07
Quote Anchor link
Ik heb een tabel "berichten" met 900 000 rows. de tekst veld daarvan waar tekst in staat heb ik geindexed, een gewone index en een fullsearch index geprobeert.
Alleen als id voor een primary key, is hij het snelst.

Maar met indexen 10 keer langzamer.

Het werkt van een bepaald script, die aan ajax.php laad, waar vele ysql queries met left outer joins geladen worden.
Duur gemiddeld 40 sec om het geheel te laden.

MariaDB 10.1 word gebruikt.
Wie weer hoe ik dit supersnel kan maken?

Groet

Daniel
 
PHP hulp

PHP hulp

19/05/2019 09:32:50
Honeypot
 
Bart V B

Bart V B

12/02/2018 17:26:36
Quote Anchor link
Heb je ook al eens een EXPLAIN gedraaid op je query?
Geeft deze geen duidelijkheid waar de bottleneck zit?
 
Daniel van Seggelen

Daniel van Seggelen

12/02/2018 18:52:55
Quote Anchor link
Ik zie hier de query die nu geladen word:

SELECT count(*) as tot FROM `messages` WHERE `to` in (select profile_id from `user_profiles` where is_fake=1 and user_id = 1) and `_initiator` ='unanswered'

Die gaat dan door alle rijen heen om een nummer eruit te krijgen.
Dit duurt erg lang. Hoe kan dit sneller?

Toevoeging op 12/02/2018 19:29:44:

Update,

Ik weet nu welke query zo lang duurt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT * ,b.profile_id as from_id , b.profile_name as from_name , b.profile_image as from_image, b.gender as from_gender , c.profile_id as to_id , c.profile_name as to_name , DATE_FORMAT(time_sending,'%b %d %Y %h:%i %p') as time_sending FROM `messages` a LEFT JOIN user_profiles b ON a.from = b.profile_id LEFT JOIN user_profiles c ON a.`to` = c.profile_id WHERE `to` in (select profile_id from `user_profiles` where is_fake=1 and user_id=1) and `_initiator` ='unanswered' and hide = 0 order by `time_sending` desc LIMIT 5

$return = $db->query($sql );

while ($row = $return->fetch_object()){
/// de rest
}


duurt 30 sec
Hoe kan ik dit versnellen?
 
Thomas van den Heuvel

Thomas van den Heuvel

12/02/2018 20:20:44
Quote Anchor link
Bart V B op 12/02/2018 17:26:36:
Heb je ook al eens een EXPLAIN gedraaid op je query?
Geeft deze geen duidelijkheid waar de bottleneck zit?
 
Ivo P

Ivo P

12/02/2018 21:51:31
Quote Anchor link
het is op zich niet verboden om leesbare query's te schrijven.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT * ,
      b.profile_id as from_id ,
      b.profile_name as from_name ,
      b.profile_image as from_image,
      b.gender as from_gender ,
      c.profile_id as to_id ,
      c.profile_name as to_name ,
      DATE_FORMAT(time_sending,'%b %d %Y %h:%i %p') as time_sending
FROM `messages` a
LEFT JOIN user_profiles b ON a.from = b.profile_id
LEFT JOIN user_profiles c ON a.`to` = c.profile_id
WHERE `to` in (select profile_id from `user_profiles` where is_fake=1 and user_id=1)
and `_initiator` ='unanswered' and hide = 0
order by `time_sending` desc
LIMIT 5


paar dingen:
aliases kun je gebruiken om niet steeds lange complexe tabelnamen te moeten typen. Of om duidelijkere namen te maken. Maar a, b en c draag alleen maar bij aan onduidellijkheid.

Verder is SELECT* in combinatie met een hele lijst kolommen die je dan nog apart op haalt, wat vreemd. Doe dan SELECT a.* of zo. (dit raad ik maar, omdat je wel uit b en c select met aparte kolommen.

En dan de subquery: WHERE iets IN ( een subquery) is doorgaans traag.
waarom niet een join?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT a.* ,
      b.profile_id as from_id ,
      b.profile_name as from_name ,
      b.profile_image as from_image,
      b.gender as from_gender ,
      c.profile_id as to_id ,
      c.profile_name as to_name ,
      DATE_FORMAT(time_sending,'%b %d %Y %h:%i %p') as time_sending
FROM `messages` a
LEFT JOIN user_profiles b ON a.from = b.profile_id
LEFT JOIN user_profiles c ON a.`to` = c.profile_id
LEFT JOIN user_profiles fake ON fake.profile_id = a.to and fake.is_fake=1 and fake.user_id = 1
WHERE `_initiator` ='unanswered' and hide = 0
order by `time_sending` desc
LIMIT 5



Ik zou alle kolomnamen prefix-en met de tabelnaam of alias. Dat maakt het voor je zelf duidelijker, uit welke tabel je iets haalt (en ook voor een ander)
 
Daniel van Seggelen

Daniel van Seggelen

13/02/2018 08:31:49
Quote Anchor link
Bedankt werkt een stuk sneller.

Ik zie elder ook dergelijk queries met IN, maar deze krijg ik niet voor elkaar:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
select * from messages a LEFT JOIN user_profiles b ON a.`to` = b.profile_id  WHERE `to` in (SELECT profile_id FROM `user_profiles` WHERE `is_fake`=0 ) and `from` in (SELECT profile_id FROM `user_profiles` WHERE `is_fake`=0 ) and `hide` not in (SELECT profile_id FROM `user_profiles` WHERE `is_fake`=0 )


mijn mysql query skills zijn niet zo goed, dus snap niet hoe ik de NOT IN moet verbeteren


Toevoeging op 13/02/2018 09:25:02:

BEste Ivo,

De joins query, die haalt resultaten op en de initiele niet. Wat is hier anders aan?

Het is dus niet hetzelfde resultaat
 
Ivo P

Ivo P

14/02/2018 15:05:17
Quote Anchor link
ik heb een left-join gebruikt.
Ik denk bij nader inzien, dat je misschien een join nodig had.

En mogelijk zou je die dan ook nog op de regel na FROM moeten/kunnen plaatsen.

Verder over je andere query:
probeer het eens met hier en daar een enter.
Verder lijkt me FROM niet zo'n heel handige kolomnaam, net als TO
https://dev.mysql.com/doc/refman/5.7/en/keywords.html#keywords-5-7-detailed-F

Om te beginnen:
een query van 300 tekens op 1 regel is niet leesbaar.

Als je dat verdeelt over meerdere regels, kom je een stuk verder.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
select *
from messages a
LEFT JOIN user_profiles b ON a.`to` = b.profile_id
WHERE `to` in (SELECT profile_id FROM `user_profiles` WHERE `is_fake`=0 )
and `from` in (SELECT profile_id FROM `user_profiles` WHERE `is_fake`=0 )
and `hide` not in (SELECT profile_id FROM `user_profiles` WHERE `is_fake`=0 )



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
select *
from messages a
JOIN  user_profiles naar
    ON a.to = naar.profile_id AND naar.is_fake = 0
JOIN user_profiles van
    ON a.from = van.profile_id AND van.is_fake = 0
LEFT JOIN user_profiles b ON a.`to` = b.profile_id
-- and `hide` not in (SELECT profile_id FROM `user_profiles` WHERE `is_fake`=0 )


en die hide mag je zelf proberen
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.