Transforming the copper-clad laminate of a blank printed circuit board into a functional electronic circuit involves carefully removing unwanted copper to leave only the desired conductive traces and pads. This vital fabrication step is known as PCB etching or circuit board etching. It represents a key juncture during board fabrication, translating the PCB layout into physical form.
While industrial manufacturers rely on complex chemical etching equipment, hobbyists can etch simple boards at home using inexpensive materials.
This comprehensive guide covers everything related to PCB board etching - the essence of converting an inert board into the wiring backbone of an electronic device.
In the next few minutes, we'll discuss various PCB etching methods, procedures, stages in the manufacturing flow, safety measures when handling chemicals, and tips for troubleshooting common etching issues.
Alright, let's get started, shall we?
What is PCB Etching
PCB etching refers to the process of selectively removing copper from the laminate to leave only the desired conductive pattern of traces and pads. It converts the raw copper-clad board into a functional printed circuit board.
Etching works by using chemicals to dissolve away unwanted copper foil while masking the areas to remain intact.
The most common etching technique relies on photolithography. An ultraviolet light-sensitive photoresist is applied on the PCB layer before using a phototool film with the required circuit layout.
Light exposure crosslinks and hardens the resist, while unexposed areas remain soluble. Chemical development washes away these soluble regions, leaving a protective resist mask shielding intended copper features.
The PCB then undergoes etching by liquid etchants like ferric chloride or ammonium persulfate, which remove all exposed copper. Finally, stripping the remaining photoresist mask exposes the desired conductive pattern that matches the original circuit layout.
The etched board can then undergo drilling, plating, solder mask application, and other fabrication steps. This means etching helps transform the copper foil into the actual circuit wiring backbone.
Types of PCB Etching
There are two main categories for PCB etching processes - wet etching and dry etching. You've got to understand both methods have pros and drawbacks.
Now, choosing the right etching technique depends on the type of PCB, desired resolution and line width, compatibility with materials, cost, and environmental considerations.
Wet Etching
Wet etching involves immersing the copper-clad laminate PCB in a chemical etchant solution that eats away the unwanted copper, leaving only the protected traces and pads. It's an inexpensive process commonly used for high-volume PCB production.
The two main types of wet etching solutions are acidic and alkaline.
1. Acidic Etching
In acidic etching, ferric chloride (FeCl3) is the most popular etchant used in industry and hobbyist settings. It aggressively dissolves copper in an isotropic fashion, meaning it etches uniformly in all directions. This makes ferric chloride well-suited for etching complex contours and inner layer PCBs.
Other acidic solutions include ammonium persulfate, hydrogen peroxide/sulfuric acid, and copper chloride. Their isotropic etching provides high undercut control but can result in track thinning if not monitored closely. A major downside of acidic etchants is their environmental toxicity, requiring proper disposal.
2. Alkaline Etching
Alkaline etchants such as sodium persulfate and ammonium hydroxide etch copper anisotropically, meaning vertical sidewalls are formed for precise pattern transfer. This allows for finer feature definition down to 25 μm line width and spacing. Alkaline solutions etch slower but provide better etching control.
Since alkaline chemistry etches in one direction, it often requires agitation by air bubbling for uniform etching across the board. Alkaline etchants are less toxic than acidic ones. A neutralizing rinse after etching prepares the PCB for solder masking and plating processes.
So, wet chemical etching generates hazardous waste but allows the etching of thin copper layers down to 1 oz weight effectively. It offers a simpler process compared to dry etching for circuit boards.
Dry Etching
Dry etching uses gas plasma or laser ablation to remove copper instead of liquid etchants.
It provides superior precision and efficiency than traditional wet etching, making it well-suited for HDI PCBs requiring fine geometries.
However, the patterned masks and equipment involved make dry etching much more expensive.
1. Plasma Etching
In plasma etching, the copper-clad laminate is placed in a vacuum chamber flooded with glow discharge plasma. When the reactive ions from the plasma gas strike the substrate, they chemically attack the exposed copper regions.
Plasma etching can use oxygen, sulfur dioxide, chlorine, or fluorine-based gases. The plasma allows highly anisotropic etching for creating vertical sidewalls. By controlling parameters like power, pressure, and duration, etching resolution under ten μm is possible.
The main downside is that plasma can damage photoresist masks, limiting the process flexibility compared to wet etching. Complex waste gas treatment systems are also required to filter out toxic byproducts.
2. Laser Etching
Laser ablation provides a maskless method for direct copper patterning using a highly focused laser beam. The intense laser locally heats the copper layer to vaporize parts of it cleanly.
Precise movements of the laser system allow the etching of straight lines and holes down to 25 μm or lower when needed. The process causes minimal surface damage while avoiding liquid waste streams.
However, serial writing by the laser is slower compared to parallel photolithographic processes. Laser systems are complex, and zone-by-zone ablation can lead to uneven circuit board etching. Thermal exposure can also induce micro-cracks in dielectric layers.
So, while dry etching promises excellent etching quality, it requires significant capital investment. Wet chemical etching remains the most viable option for everyday PCB prototyping and production needs.
And, of course, hybrid methods combining wet and dry etching may provide the flexibility and precision needed for future electronics.
Which Stage Does PCB Etching Locate During PCB Manufacturing
PCB etching is the critical step that physically transfers the circuit layout onto the copper layer by chemically removing unwanted copper regions. It occurs after photolithographic pattern transfer but prior to back-end finishing work.
The journey from PCB design to finished board requires over a dozen manufacturing sequences. The stages leading up to circuit board etching are:
● Design: Engineers create the PCB layout in CAD software, specifying circuit paths, components, hole sizes, etc.
● Film Generation: The CAD output is used to make a high-resolution photomask film defining the layout in opaque and clear patterns.
● Substrate Preparation: The copper-clad laminate PCB blank is machined to the proper thickness and drilled for vias.
● Surface Treatment: The PCB panel goes through cleaning, graining, and other surface treatments to improve photoresist adhesion.
● Photoresist Application: A light-sensitive polymer resist material is uniformly coated on the substrate through spray or roller coating.
● Pre-exposure Bake: The PCB is baked to drive out any moisture or solvents from the liquid photoresist coating.
● Exposure: The layout film is precisely aligned to the PCB and exposed to intense ultraviolet light. Light either selectively hardens or softens the resist.
● Developing: Based on positive or negative photoresist used, either exposed or unexposed areas are dissolved away by the developer solution.
At this point, channels and pads of bare copper are revealed on the PCB while the photoresist still shields parts of the surface. PCB etching can now take place to remove the uncovered copper.
Post-etching steps include:
● Photoresist Stripping: Residual resist coating is removed through chemical stripping, leaving a pristine copper circuit layout.
● Conductive Layer Plating: Interconnecting holes/vias are plated to form conductive paths between layers.
● Solder Mask Coating: The assembly areas are masked for protection from solder bridges and environmental corrosion.
● Legend Printing: Component outlines, labels, and markers are silk screen printed to assist PCB assembly.
So, circuit board etching is the crucial step for transferring the desired circuit layout onto the conductive copper layer by precisely removing excess copper. It comes after photolithographic transfer but before the final PCB finishing.
How to Etch a PCB Board (DIY Circuit Board Etching)
Etching allows transferring a circuit layout onto the copper layer of a PCB blank by selectively removing unwanted copper regions not protected by an etch resist.
While commercial PCB etching uses complex photolithographic equipment, home DIY etching can also produce quality boards through simple techniques.
Follow these key steps to etch a PCB board:
Step 1: Design Circuit Layout
Create the PCB track layout by manually drawing or using EDA software like Eagle, KiCad, or Fritzing. Plan pad sizes, trace widths, hole sizes, etc., as per circuit needs. Output Gerber files for board fabrication.
Step 2: Print Layout Pattern
For the toner transfer method, print the layout onto a laser printer transparency sheet. For photochemical etching, output onto a high-resolution film photomask. Align film emulsion-side down onto copper to transfer the pattern later.
Step 3: Prepare Copper Clad Laminate
Choose a fiberglass reinforced copper clad of appropriate dimension from 1⁄4 oz to 2 oz copper weight. Scrub the copper foil lightly with steel wool or fine sandpaper to remove oxidation, then clean it with isopropyl alcohol. Alternatively, apply a liquid tinning solution to coat exposed copper.
Step 4: Transfer Layout Onto Copper
For toner transfer, secure the transparency sheet toner-side down onto the cleaned copper foil using magazine pages for pressure distribution. Run a household iron on its highest setting on the paper for 3-5 minutes, then peel the transparency. For photochemical etching, use a UV exposure unit.
Step 5: Etch Board in Ferric Chloride
Mix ferric chloride etchant as per the manufacturer's datasheet and submerge the board in the agitated etching tank. The time required ranges from 30-60 minutes for full copper removal from open areas, leaving only toner or UV-hardened resist-protected traces behind.
Step 6: Rinse and Dry
Remove the board from the exhaust etching bath and rinse off residual chemicals thoroughly under running water. Blot dry with an absorbent cloth or dry in ambient conditions. Visually inspect for complete copper etching.
Step 7: Drill Holes
If the design has pad holes or vias, use a small bit drill machine to bore holes at the marked intersections. Deburr holes completely.
Step 8: Remove Resist
Use acetone-soaked cotton balls to strip off the dry resist residue from toner or photoresist, which reveals the finished copper pattern needed for installing components.
The etched bare board serves as the foundation for adding pads, plated holes, solder masks, and silkscreen printing, transforming it into functional PCB assembly.
While chemical home etching takes time, it provides an inexpensive DIY circuit board prototyping process before investing in large-volume PCB fabrication to bring product ideas to life.
With practice, high-fidelity PCB boards can be etched at home. Understanding the steps we've outlined above should help you tweak parameters for improved layout transfer and optimum etching quality.
Here is a complete guide on DIY PCB etching at home:
Common Issues Found in PCB Etching
While PCB etching allows the transfer of layout patterns onto the copper layer, several processing defects can occur, leading to etching flaws.
Understanding what could go wrong helps troubleshoot and optimize the etching process.
So, here are seven common issues you might come across during the process of circuit board etching:
Undercutting
This refers to excessive sideways etching due to isotropic etching behavior. It causes narrowed trace widths and poor resolution. Using alkaline etchants, agitation control, and optimal timing reduces undercutting.
Overcutting
When the applied etching solution is too strong or the etching time is too long, it will attack the resist layer, leading to PCB etching defects beyond the pattern boundaries. Monitoring etch rates and visual inspection ensures optimal endpoint without overcutting.
Pitting and Pinholes
Rough copper surfaces with dents, scratches, or impurities get etched at faster rates, leading to pitted copper with holes after etching. Proper PCB surface preparation by desmearing and metal brushing minimizes uneven etching.
Copper Notching
Notching occurs when residual substances left from resist development get etched faster than copper, creating notches and voids along trace edges. Complete development to remove residues prevents notching.
Broken Traces
Mechanical or handling stresses can detach thin copper traces post-etching. Likewise, pinholes or nicks in the resist layer expose copper to premature etching. Gentle handling and flawless resist applications maintain intact traces.
Tenting
Where two copper areas are closely spaced, the resist material often bridges between them. During etching, copper gets trapped under the resist 'tent,' leading to potential shorts. Adequate exposures create clean openings.
False Starts and Missing Pad Connections
Incomplete transfer or clogged nozzles result in missing spots of resist coating. This leaves copper prematurely exposed, creating breaks in traces or isolated pads after etching. Refining the coating process improves transfer efficiency.
The specific cause behind etching defects can be pinpointed with observation and analysis of actual boards. Adjusting relevant parameters like resist adhesion, exposure depth, etchant concentration, and agitation then helps overcome issues for better-quality PCB etching results.
Safety Precautions While DIY Etching a PCB at Home
PCB etching requires working with harsh chemicals like ferric chloride, hydrochloric acid, or sodium persulfate. Without adequate precautions, the acidic fumes and skin contact hazards can quickly cause health issues.
You should follow these DIY etching safety tips:
1. Work in a ventilated area using a fan extraction hood to remove airborne fumes from the etching chemicals. This prevents breathing irritation. Suitable PPE, like an acid gas respirator, provides additional airway protection.
2. Wear nitrile gloves to cover your hands completely. Determine glove compatibility as vinyl gloves degrade rapidly in etching solutions. Goggles protect eyes from splashes, while an apron shields the body and clothes.
3. Etch in a large non-metallic tank instead of small bowls, which easily overflow. Place the tank inside a larger plastic tub to catch spills. Position on an acid-proof workbench or concrete floor for stability.
4. Prepare a baking soda or diluted borax solution nearby to neutralize any acid spills on skin or surfaces quickly. Keep an emergency eye wash station ready as well.
5. When mixing acid powder concentrates, add powder to water, not the reverse. This avoids violent reactions with splashes.
6. Store spent etching chemicals securely labeled in sealed plastic containers for appropriate chemical waste disposal and to prevent environmental contamination. Also, practice good hygiene by washing hands after work and preventing eating or drinking nearby.
With responsible handling precautions, PCB etching can be done relatively safely, even in DIY home environments.
Conclusion
PCB etching is the critical manufacturing step that removes unwanted copper to transfer the layout onto the board by chemical dissolution.
As we pointed out earlier, two key etching methods are wet etching using acidic or alkaline solutions and dry etching with plasma/lasers.
Circuit board etching comes after the initial pattern transfer steps, such as toner transfer or photolithography. Some common issues that can arise here are undercutting broken traces based on etching parameters, handling flaws, or resisting adhesion problems.
But with the right precautions, even home etching with simple chemicals yields decent results. You have to understand the etching mechanisms, process optimization, and troubleshooting because this allows harnessing etching to transform blank boards effectively into functional circuits for electronics.
At PCBasic, we offer professional, high-quality PCB etching and manufacturing services out of China, facilitating rapid prototyping and production.
Contact us for a free quote to make your next reliable custom PCB with optimized etching.
SHOW FULL COLUMNS FROM `db_category` [ RunTime:0.000747s ]
SELECT `id`,`module`,`url`,`catdir` FROM `db_category` WHERE `ismenu` = 1 [ RunTime:0.000353s ]
SHOW FULL COLUMNS FROM `db_member` [ RunTime:0.000672s ]
SHOW FULL COLUMNS FROM `db_page` [ RunTime:0.000587s ]
SHOW FULL COLUMNS FROM `db_article` [ RunTime:0.000556s ]
SELECT `catid` FROM `db_article` WHERE `route` = 'pcb_etching' LIMIT 1 [ RunTime:0.000275s ]
SELECT * FROM `db_category` WHERE `id` = 235 LIMIT 1 [ RunTime:0.000262s ]
SELECT `id` FROM `db_article` WHERE `catid` = 235 AND `route` = 'pcb_etching' LIMIT 1 [ RunTime:0.000266s ]
SELECT * FROM `db_article` WHERE `id` = 72 LIMIT 1 [ RunTime:0.000263s ]
UPDATE `db_article` SET `hits` = `hits` + 1 WHERE `id` = 72 [ RunTime:0.002085s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `id` = 223 AND `status` = 1 AND `ismenu` = 1 [ RunTime:0.000419s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 223 [ RunTime:0.000257s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `pid` = 223 AND `status` = 1 AND `ismenu` = 1 ORDER BY `listorder` ASC,`id` ASC [ RunTime:0.000386s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 224 [ RunTime:0.000211s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 311 [ RunTime:0.000193s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 312 [ RunTime:0.000191s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 313 [ RunTime:0.000189s ]
SELECT `arrchildid` FROM `db_category` WHERE `id` = 292 LIMIT 1 [ RunTime:0.000220s ]
SHOW FULL COLUMNS FROM `db_case` [ RunTime:0.000619s ]
SELECT `title`,`id`,`thumb`,`url`,`description`,`createtime`,`status` FROM `db_case` WHERE `catid` = 292 ORDER BY `listorder` ASC,`createtime` DESC,`id` DESC LIMIT 8 [ RunTime:0.000333s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `pid` = 227 AND `status` = 1 AND `ismenu` = 1 ORDER BY `listorder` ASC,`id` ASC [ RunTime:0.000300s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 243 [ RunTime:0.000201s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 244 [ RunTime:0.000191s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 245 [ RunTime:0.000190s ]
SELECT `arrchildid` FROM `db_category` WHERE `id` = 297 LIMIT 1 [ RunTime:0.000194s ]
SELECT `title`,`id`,`thumb`,`url`,`description`,`createtime`,`status` FROM `db_case` WHERE `catid` = 297 ORDER BY `listorder` ASC,`createtime` DESC,`id` DESC LIMIT 8 [ RunTime:0.000287s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `id` IN (310,229,232) AND `status` = 1 AND `ismenu` = 1 [ RunTime:0.000282s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 229 [ RunTime:0.000202s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `pid` = 229 AND `status` = 1 AND `ismenu` = 1 ORDER BY `listorder` ASC,`id` ASC [ RunTime:0.000277s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 230 [ RunTime:0.000198s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 231 [ RunTime:0.000190s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 232 [ RunTime:0.000190s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `pid` = 232 AND `status` = 1 AND `ismenu` = 1 ORDER BY `listorder` ASC,`id` ASC [ RunTime:0.000300s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 233 [ RunTime:0.000199s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 234 [ RunTime:0.000189s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 235 [ RunTime:0.000248s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 236 [ RunTime:0.000200s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 320 [ RunTime:0.000191s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `pid` = 320 AND `status` = 1 AND `ismenu` = 1 ORDER BY `listorder` ASC,`id` ASC [ RunTime:0.000276s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 322 [ RunTime:0.000198s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 323 [ RunTime:0.000189s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 310 [ RunTime:0.000188s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `id` IN (237,279,253) AND `status` = 1 AND `ismenu` = 1 [ RunTime:0.000265s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 237 [ RunTime:0.000198s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `pid` = 237 AND `status` = 1 AND `ismenu` = 1 ORDER BY `listorder` ASC,`id` ASC [ RunTime:0.000287s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 238 [ RunTime:0.000201s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `pid` = 238 AND `status` = 1 AND `ismenu` = 1 ORDER BY `listorder` ASC,`id` ASC [ RunTime:0.000330s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 265 [ RunTime:0.000202s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 266 [ RunTime:0.000190s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 267 [ RunTime:0.000187s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 268 [ RunTime:0.000192s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 269 [ RunTime:0.000187s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 270 [ RunTime:0.000186s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 271 [ RunTime:0.000185s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 272 [ RunTime:0.000185s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 273 [ RunTime:0.000186s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 251 [ RunTime:0.000184s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 252 [ RunTime:0.000186s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 253 [ RunTime:0.000187s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `pid` = 253 AND `status` = 1 AND `ismenu` = 1 ORDER BY `listorder` ASC,`id` ASC [ RunTime:0.000324s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 254 [ RunTime:0.000200s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 255 [ RunTime:0.000190s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 256 [ RunTime:0.000187s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 257 [ RunTime:0.000186s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 258 [ RunTime:0.000185s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 259 [ RunTime:0.000186s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 260 [ RunTime:0.000185s ]
SHOW FULL COLUMNS FROM `db_banner` [ RunTime:0.000606s ]
SELECT * FROM `db_banner` WHERE `id` = 43 LIMIT 1 [ RunTime:0.000271s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `id` = 232 AND `status` = 1 AND `ismenu` = 1 [ RunTime:0.000239s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 232 [ RunTime:0.000200s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `pid` = 232 AND `status` = 1 AND `ismenu` = 1 ORDER BY `listorder` ASC,`id` ASC [ RunTime:0.000304s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 233 [ RunTime:0.000199s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 234 [ RunTime:0.000191s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 235 [ RunTime:0.000189s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 236 [ RunTime:0.000187s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 320 [ RunTime:0.000188s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `pid` = 320 AND `status` = 1 AND `ismenu` = 1 ORDER BY `listorder` ASC,`id` ASC [ RunTime:0.000346s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 322 [ RunTime:0.000198s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 323 [ RunTime:0.000189s ]
SELECT `id` FROM `db_article` WHERE `catid` = 235 ORDER BY `listorder` ASC,`createtime` DESC,`id` DESC [ RunTime:0.000407s ]
SELECT `id`,`url`,`title` FROM `db_article` WHERE `id` = 73 LIMIT 1 [ RunTime:0.000201s ]
SELECT `id`,`url`,`title` FROM `db_article` WHERE `id` = 71 LIMIT 1 [ RunTime:0.000188s ]
SELECT `arrchildid` FROM `db_category` WHERE `id` = 235 LIMIT 1 [ RunTime:0.000190s ]
SELECT `title`,`id`,`thumb`,`url`,`description`,`createtime` FROM `db_article` WHERE `catid` = 235 ORDER BY `listorder` ASC,`createtime` DESC,`id` DESC LIMIT 5 [ RunTime:0.000374s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `id` IN (226,237,253,261) AND `status` = 1 AND `ismenu` = 1 [ RunTime:0.000289s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 226 [ RunTime:0.000203s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `pid` = 226 AND `status` = 1 AND `ismenu` = 1 ORDER BY `listorder` ASC,`id` ASC [ RunTime:0.000330s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 228 [ RunTime:0.000201s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `pid` = 228 AND `status` = 1 AND `ismenu` = 1 ORDER BY `listorder` ASC,`id` ASC [ RunTime:0.000328s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 246 [ RunTime:0.000200s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `pid` = 246 AND `status` = 1 AND `ismenu` = 1 ORDER BY `listorder` ASC,`id` ASC [ RunTime:0.000267s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 280 [ RunTime:0.000196s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 247 [ RunTime:0.000188s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 248 [ RunTime:0.000187s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 249 [ RunTime:0.000186s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 250 [ RunTime:0.000187s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `pid` = 250 AND `status` = 1 AND `ismenu` = 1 ORDER BY `listorder` ASC,`id` ASC [ RunTime:0.000394s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 284 [ RunTime:0.000200s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 285 [ RunTime:0.000189s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 286 [ RunTime:0.000189s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 288 [ RunTime:0.000186s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 289 [ RunTime:0.000186s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 287 [ RunTime:0.000186s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 290 [ RunTime:0.000185s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 242 [ RunTime:0.000186s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `pid` = 242 AND `status` = 1 AND `ismenu` = 1 ORDER BY `listorder` ASC,`id` ASC [ RunTime:0.000286s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 274 [ RunTime:0.000198s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 275 [ RunTime:0.000188s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 276 [ RunTime:0.000186s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 277 [ RunTime:0.000185s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 278 [ RunTime:0.000186s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 281 [ RunTime:0.000185s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 282 [ RunTime:0.000186s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 283 [ RunTime:0.000184s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 237 [ RunTime:0.000187s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `pid` = 237 AND `status` = 1 AND `ismenu` = 1 ORDER BY `listorder` ASC,`id` ASC [ RunTime:0.000286s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 238 [ RunTime:0.000201s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `pid` = 238 AND `status` = 1 AND `ismenu` = 1 ORDER BY `listorder` ASC,`id` ASC [ RunTime:0.000327s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 265 [ RunTime:0.000273s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 266 [ RunTime:0.000195s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 267 [ RunTime:0.000189s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 268 [ RunTime:0.000187s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 269 [ RunTime:0.000187s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 270 [ RunTime:0.000185s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 271 [ RunTime:0.000186s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 272 [ RunTime:0.000184s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 273 [ RunTime:0.000185s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 251 [ RunTime:0.000186s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 252 [ RunTime:0.000185s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 253 [ RunTime:0.000188s ]
SELECT `id`,`name`,`pid`,`url`,`module` FROM `db_category` WHERE `pid` = 253 AND `status` = 1 AND `ismenu` = 1 ORDER BY `listorder` ASC,`id` ASC [ RunTime:0.000315s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 254 [ RunTime:0.000199s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 255 [ RunTime:0.000189s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 256 [ RunTime:0.000186s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 257 [ RunTime:0.000186s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 258 [ RunTime:0.000193s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 259 [ RunTime:0.000185s ]
SELECT COUNT(*) AS think_count FROM `db_category` WHERE `pid` = 260 [ RunTime:0.000184s ]
SELECT * FROM `db_page` WHERE `catid` = 2 LIMIT 1 [ RunTime:0.000271s ]