[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-slow-query-first-steps-en":3,"blog-adjacent-slow-query-first-steps-en":29,"blog-related-slow-query-first-steps-en":66},{"id":4,"slug":5,"title":6,"excerpt":7,"content":8,"cover":9,"tone":10,"author":11,"publishedAt":12,"updatedAt":12,"readingMinutes":13,"featured":14,"tags":15,"category":19,"seoSettings":28},33,"slow-query-first-steps","Taming Slow Queries: Read the Plan Before Optimising","Adding an index is not a universal cure. Without an execution plan, tuning is guesswork.","\u003Cp>When a system slows down, the usual reflexes are adding indexes and then caching. Both sometimes work and sometimes push the problem three months out. Our habit is to get the execution plan first, then decide what to change.\u003C\u002Fp>\n\u003Ch2>Our order of investigation\u003C\u002Fh2>\n\u003Cp>Enable the slow query log and sort by total time, not by single execution. A 200 ms query running fifty times per second matters more than a five-second query that runs occasionally.\u003C\u002Fp>\n\u003Cp>Run EXPLAIN and read access type, rows scanned and index usage. A type of ALL with large rows usually confirms the problem.\u003C\u002Fp>\n\u003Cp>Check for implicit type conversion. Comparing a string column against a number silently disables the index.\u003C\u002Fp>\n\u003Ch2>Common mistakes\u003C\u002Fh2>\n\u003Cp>Indexing every column, which slows writes and bloats storage for little gain.\u003C\u002Fp>\n\u003Cp>Tuning SQL without looking at the business need; often the query fetches far more data than required.\u003C\u002Fp>\n\u003Cp>Treating cache as a fix. When the hit rate drops, the database takes a larger instantaneous load.\u003C\u002Fp>\n\u003Cp>Slow query work never really ends. Every project keeps a query list and reviews its ten slowest statements monthly after launch.\u003C\u002Fp>","","teal","佳益方圆团队","2026-09-11T12:39:00+08:00",1,false,[16,17,18],"Database","Performance","SQL",{"id":13,"parentId":20,"slug":21,"name":22,"description":23,"icon":24,"cover":9,"tone":25,"kind":26,"sortOrder":27,"count":20},0,"engineering","Engineering","Hands-on engineering practices in architecture, performance optimization, AI integration and cross-platform delivery from our R and D team.","cpu","blue","article",60,{},{"previous":30,"next":48},{"id":31,"slug":32,"title":33,"excerpt":34,"content":9,"cover":9,"tone":35,"author":11,"publishedAt":36,"updatedAt":36,"readingMinutes":13,"featured":14,"tags":37,"category":41},12,"choosing-clients-not-deals","Choosing Clients Matters More Than Choosing Projects","The same contract can grow a team or drain it. We now screen clients with three questions.","indigo","2026-09-13T11:26:00+08:00",[38,39,40],"Startup","Clients","Judgement",{"id":42,"parentId":20,"slug":43,"name":44,"description":45,"icon":46,"cover":9,"tone":25,"kind":26,"sortOrder":47,"count":20},6,"founder-notes","Founder Notes","Reflections from the founding team on business, management and product, documenting the growth of a software company.","pen-tool",10,{"id":49,"slug":50,"title":51,"excerpt":52,"content":9,"cover":9,"tone":53,"author":11,"publishedAt":54,"updatedAt":54,"readingMinutes":13,"featured":14,"tags":55,"category":59},53,"admin-panel-experience","Admin Systems Are Products Too","Back-office users spend eight hours a day there. One inefficient click becomes a long-term cost.","cyan","2026-09-09T12:39:00+08:00",[56,57,58],"Admin","UX","Product Design",{"id":60,"parentId":20,"slug":61,"name":62,"description":63,"icon":64,"cover":9,"tone":25,"kind":26,"sortOrder":65,"count":20},2,"product-thinking","Product Thinking","Requirement analysis, user experience and product design methods, plus the thinking from business problems to product solutions.","lightbulb",50,[67,77,88],{"id":68,"slug":69,"title":70,"excerpt":71,"content":9,"cover":9,"tone":53,"author":11,"publishedAt":72,"updatedAt":72,"readingMinutes":13,"featured":14,"tags":73,"category":76},30,"integration-api-pitfalls","Five Traps in Enterprise System Integration","However complete the API documentation is, integration usually stalls on field semantics, timeouts and repeated pushes.","2026-10-17T09:00:00+08:00",[74,75,22],"Integration","APIs",{"id":13,"parentId":20,"slug":21,"name":22,"description":23,"icon":24,"cover":9,"tone":25,"kind":26,"sortOrder":27,"count":20},{"id":13,"slug":78,"title":79,"excerpt":80,"content":9,"cover":9,"tone":53,"author":11,"publishedAt":81,"updatedAt":82,"readingMinutes":60,"featured":83,"tags":84,"category":87},"why-enterprise-systems-age","Why Enterprise Systems Start to Age After Three Years","A system can pass acceptance with every feature checked, then feel awkward three years later. The problem is rarely the code — it is the changes that were never considered at delivery.","2026-10-16T09:30:00+08:00","2026-10-18T15:58:14.648+08:00",true,[85,86],"System Evolution","Architecture",{"id":13,"parentId":20,"slug":21,"name":22,"description":23,"icon":24,"cover":9,"tone":25,"kind":26,"sortOrder":27,"count":20},{"id":89,"slug":90,"title":91,"excerpt":92,"content":9,"cover":9,"tone":25,"author":11,"publishedAt":93,"updatedAt":93,"readingMinutes":13,"featured":14,"tags":94,"category":98},31,"idempotent-design-basics","Idempotency: Duplicate Submissions Are Not Just Double Clicks","Retries, redelivery and impatient users all send the same request more than once. Idempotency belongs in the API design.","2026-10-05T10:13:00+08:00",[95,96,97],"API Design","Idempotency","Reliability",{"id":13,"parentId":20,"slug":21,"name":22,"description":23,"icon":24,"cover":9,"tone":25,"kind":26,"sortOrder":27,"count":20}]